题目描述:周末强强在家做作业,遇到了这样一道题,找出N位(N<8)的自然数中具有下列性质的数:如果将这个数字从中间开始分割成两部分,然后将这两部分相加,所得到的和的平方,等于原来那个数的(奇数的时候,中间的那个数字靠前)。从键盘输入N,直接在屏幕上输出答案。找不到满足要求的数时候,输出"NO FOUND"。强强想了许久也没想出来,想请你来帮忙,那么你该如何来帮助他呢? |
输入描述:输入N |
输出描述:符合条件的N位整数 |
样式输入:4 |
样式输出:2025 |
#include<stdio.h>
#include<math.h>
int main()
{
int n,a,b,c,k,i,l=0;
scanf("%d",&n);
if(n==1){
printf("NO FOUND");
return 0;
}
else{
if(n%2==0){
k=n/2;
for(i=(int)pow(10,n-1);i<(int)pow(10,n);i++){
a=i/(int)pow(10,k);
b=i%(int)pow(10,k);
c=a+b;
if(c*c==i){
printf("%d\n",i);
l=1;
}
}
}
else{
k=n/2-1;
for(i=(int)pow(10,n-1);i<(int)pow(10,n);i++){
a=i/(int)pow(10,k);
b=i%(int)pow(10,k);
c=a+b;
if(c*c==i){
printf("%d\n",i);
l=1;
}
}
}
if(l==0){
printf("NO FOUND");
}
}
return 0;
}