参考代码:
#include <iostream> #include <math.h> using namespace std; int main() { int a,b; cin>>a>>b; // 用于表示拼接平方数被分成的两部分 int one,two,ones,twos; // 用于存储拼接平方数 int c[10000]={}; int temp=0; // 用于分割 int fen; // 用于循环 int flag; // 找出[a,b]范围内的平方数 for(int i=sqrt(a);i<=sqrt(b);i++){ if(i*i>=a&&i*i<=b){ c[temp++]=i*i; } } int t=1; for(int i=0;i<temp;i++){ // 对于两位数和一位数以内的可以数过来,直接比较输出即可 if(c[i]<100&&t){ // 100以内,一位数和两位数只有49符合要求 cout<<49<<endl; t=0; } // 对于三位数的平方数,判断1+2和2+1两种情况 flag=2; fen=10; if(c[i]>100&&c[i]<1000){ while(flag){ one=c[i]/fen; two=c[i]%fen; ones=floor(sqrt(one)+0.5); twos=floor(sqrt(two)+0.5); //当两个部分都是平方数 if(ones==sqrt(one)&&twos==sqrt(two)&&sqrt(two)!=0){ cout<<c[i]<<endl; break; } fen=10*fen; flag--; } } // 对于四位数的平方数,判断1+3,2+2,3+1 flag=3; fen=10; if(c[i]>1000&&c[i]<10000){ while(flag){ one=c[i]/fen; two=c[i]%fen; ones=floor(sqrt(one)+0.5); twos=floor(sqrt(two)+0.5); //当两个部分都是平方数 if(ones==sqrt(one)&&twos==sqrt(two)&&sqrt(two)!=0){ cout<<c[i]<<endl; break; } fen=10*fen; flag--; } } //对于五位平方数,有1+4,2=3,3+2,4+1四种 flag=4; fen=10; if(c[i]>10000&&c[i]<100000){ while(flag){ one=c[i]/fen; two=c[i]%fen; ones=floor(sqrt(one)+0.5); twos=floor(sqrt(two)+0.5); //当两个部分都是平方数 if(ones==sqrt(one)&&twos==sqrt(two)&&sqrt(two)!=0){ cout<<c[i]<<endl; break; } fen*=10; flag--; } } // 对于六位数 flag=5; fen=10; if(c[i]>100000&&c[i]<1000000){ while(flag){ one=c[i]/fen; two=c[i]%fen; ones=floor(sqrt(one)+0.5); twos=floor(sqrt(two)+0.5); //当两个部分都是平方数 if(ones==sqrt(one)&&twos==sqrt(two)&&sqrt(two)!=0){ cout<<c[i]<<endl; break; } fen*=10; flag--; } } } return 0; }
0.0分
1 人评分
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:589 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:607 |
计算质因子 (C++代码)浏览:1824 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:909 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:1496 |
The 3n + 1 problem (C语言代码)浏览:550 |
IP判断 (C语言代码)浏览:592 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:611 |
C语言训练-斐波纳契数列 (C语言代码)浏览:644 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:760 |