uva 12938

来源:互联网 发布:mac下载工具推荐 编辑:程序博客网 时间:2024/06/08 16:13

题目大意:

题目的大概意思就是,给你一个四位数,换动任何一个数可以得到完全平方数,如果可以得到输出可能种类数,(注意:第一个数不可以换成0)


题目解析:这是一个简单的模拟题,首先打表,把31-100的平方存起来,然后再把用循环对四位数的每一位进行判断,在和表里的数比对即可


代码:

#include<cstdio>#include<algorithm>#include<cstring>#include<iostream>#include<cstring>#include<cmath>using namespace std;const int maxn=105;int main(){    int ans[maxn];    int text;    memset(ans,0,sizeof(ans));    //freopen("in.txt","r",stdin);    //freopen("out.txt","w",stdout);    for(int i=31; i<=100; i++)        ans[i]=i*i;    int T;    int cas=0;    cin>>T;    while(T--)    {        cas++;        cin>>text;        int cnt=0;        int a=text/1000;        int a1=text-1000*a;        int b=text/100%10;        int b1=text-b*100;        int c=text/10%10;        int c1=text-c*10;        int d=text%10;        int d1=text-d;            for(int i=1; i<=9; i++)                //qianwei                for(int j=31; j<=100; j++)                {                    if((i*1000+a1)==ans[j]&&ans[j]!=text)                        cnt++;                }            for(int i=0; i<=9; i++)                //baiwei                for(int j=31; j<=100; j++)                {                    if((i*100+b1)==ans[j]&&ans[j]!=text)                        cnt++;                }            for(int i=0; i<=9; i++)                //shiwei                for(int j=31; j<=100; j++)                {                    if((i*10+c1)==ans[j]&&ans[j]!=text)                        cnt++;                }            for(int i=0; i<=9; i++)                //gewei                for(int j=31; j<=100; j++)                {                    if((i+d1)==ans[j]&&ans[j]!=text)                        cnt++;                }        cout<<"Case "<<cas<<":"<<" "<<cnt<<endl;    }    return 0;}