수뒤집기 문제 소스좀 봐주세요 ㅡ
일본어못해요
그니깐 2244이면 2244+4422=6666 이렇게 되야한다는 거임 아니면 2112 이면 2112+2112=4224 이러면 YES이말임
#includestdio.h
#includestring.h
#includestdlib.h
int main()
{
int a,b[10],i=0,j,a2=0,sum,sum2[20],k=0,l,sw=0,acopy,n=0;
scanf(%d,&a);//a 입력받음
acopy=a;//a 복사본 만듬
while(a!=0)//a가 0이 될때까지 와일을 반복(a가 0이 아닐때 반복)
{
b[i]=a%10;//b의 배열 값에 a%10을 저장
a/=10;//a값도10으로나눠줌
i++;//i++
}
for(j=0;ji;j++)//이렇게 되면 i가 몇의 자리수인지 나옴(100이면 i는 3)
{
a2*=10;
a2+=b[j];//이 반복문을 돌게되면 b[i]값에 입력받은수가뒤집혀서 a2에 저장됨.
}
sum=acopy+a2;//a가0이됫기때문에 복사본을 쓰는거임 지금 sum 에는입력수랑 뒤집수의 합이 저장되잇음
while(sum!=0)//합한수 sum이 0이될때까지 반복함
{
sum2[k]=sum%10;//sum2값에다가 10으로 나눈 값을 저장함
sum/=10;//sum 을 나눔
k++;//k++
}
l=k;//k값을 l 에 복사함
if(k%2==0)//만약 k가 짝수일때(k는 여기서 몇의자리수인지 나타냄 짝수라면 10,1000의자리수 홀수라면 100 10000
{
for(j=0;jk;j++)
{
if(sum2[j]==sum2[l])//양옆의값을 j는 더해가며 l 은 빼가며 비교해나감
l--;
else if(sum2[j]!=sum2[l])//만약 다르다면, sw값을 1로 바꾸고 반복문을 break 로 빠져나감.
{
sw=1;
break;
}
}if(sw==0)//이렇게 되면 sw 의 변한값이 없기 때문에 서로 같다는 것을 알수 있고,
printf(YES);
else if(sw==1)//비교과정에서 sw가 1이 됫다면 서로 다르다는것을 뜻함
printf(NO);
}else if(k%2!=0)//이제 자릿수가 홀수일때,
{
while(sum2[n]!=sum2[k/2])//그니깐더해가는n의값이 수의 중간값일때,(여기서 중간값은 22322 면 3을뜻함)
{
if(sum2[n]==sum2[l])//여기서도 서로 비교
{
l--;
n++;
}
else if(sum2[n]!=sum2[l])//다른 값이 나왓을때는 sw를 1로하고 반복문을break로 나감
{
sw=1;
break;
}
}
if(sw==0)//여기도 마찬가지로
printf(YES);
else if(sw==1)
printf(NO);
}
return 0;
}좀 봐주세요 ㅠ