程序媛小秒


私信TA

用户名:uq_95485294184

访问量:1076

签 名:

等  级
排  名 5536
经  验 1527
参赛次数 0
文章发表 15
年  龄 0
在职情况 学生
学  校 武汉轻工大学
专  业

  自我简介:

TA的其他文章

通俗易懂C++
浏览:29



参考代码:

#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 人评分

  评论区

  • «
  • »