수식으로 계산해서 1% 증가할 때 의 i 값을 찾고 그 값으로 우선 대입하여
비교하고 혹시나 i 값이 모자랄 것을 대비해 while안에서 제한 범위 내에서 증가하도록 하였습니다.
조금씩 바꾸면서 예외도 바꿔보고 했는데 실행시간도 빠르고 테스트 케이스도 많이 넣어봣는데 계속 오답으로 나와서, 왜 그런지 궁금합니다!
#include <stdio.h>
#include <math.h>
int main()
{
int number=0;
int play = 0;
int win = 0;
double temp=0.0;
int Z=0;
int result=0;
int extra=0;
bool flag=false;
int i=0;
scanf("%d",&number);
while( number--)
{
scanf("%d %d",&play,&win);
temp = ((double)win/play)*100;
Z = (int)temp;
if( Z >= 99 ) flag = false;
else{
i = (int)ceil( ( (double)( win*100 - (Z+1)*play ) / ( Z-99 ) ) );
while( i <= 2000000000) {
result = (int)((double)(win + i)/(play + i)*100) ;
if( (Z + 1) <= result )
{
extra = i; flag = true; break;
} else flag = false;
i++;
}
}
if( flag ) printf("%d\n", extra);
else printf("%d\n",-1);
}
return 0;
}
혹시 예상치 못하게 while문에서 못나오는 경우가 발생할까봐
while만 빼고 해봤는데 안되서 쓸데없는거 다 빼버리고 아래처럼도 해봤는데도 오답이 계속 발생하네요..
#include <stdio.h>
#include <math.h>
int main()
{
int number=0;
int play = 0;
int win = 0;
int Z=0;
scanf("%d",&number);
while( number--)
{
scanf("%d %d",&play,&win);
Z = ((double)win/play)*100 + 1;
if( Z < 100 ){
printf("%d\n", (int)ceil( ( (double)( win*100 - Z*play ) / ( Z-100 ) ) ));
}else printf("%d\n",-1);
}
return 0;
}
wondaebal
수식으로 계산해서 1% 증가할 때 의 i 값을 찾고 그 값으로 우선 대입하여
비교하고 혹시나 i 값이 모자랄 것을 대비해 while안에서 제한 범위 내에서 증가하도록 하였습니다.
조금씩 바꾸면서 예외도 바꿔보고 했는데 실행시간도 빠르고 테스트 케이스도 많이 넣어봣는데 계속 오답으로 나와서, 왜 그런지 궁금합니다!
혹시 예상치 못하게 while문에서 못나오는 경우가 발생할까봐
while만 빼고 해봤는데 안되서 쓸데없는거 다 빼버리고 아래처럼도 해봤는데도 오답이 계속 발생하네요..
치명적인 실수가 있는건지 궁금합니다.
11년 전