搜索
楼主: 凡夫俗子
打印 上一主题 下一主题

C语言一天一练--22.august

[复制链接]
16#
发表于 2013-3-26 17:11:05 | 只看该作者
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
        int i,w;
    long a,b,sum,p;
    for (a=1;a<1000000;a++)
    {
                for(b=1;b<1000000;b++)
                {
                        for(i=1;i<10;i++)
                        {
                                w=(int)ceil(pow(10,i));  
                                if(b/w==0)
                                        {
                                                //printf("%d\n",i);
                                                break;
                                        }
            }
            sum=a*w+b;
            p=(a+b)*(a+b);
            if(sum==p&&p<=999999999999)
                        printf("a=%ld  b=%ld  ab=%ld\n",a,b,sum);      
        }
    }
   
        system("pause");
        return 0;
}




对log10()函数不太了解,用稍微熟悉的方法写了个,应该没错。
只是出答案的速度太慢了点。呵呵三重循环。

17#
发表于 2013-8-22 21:55:39 | 只看该作者
#include <stdio.h>
#include<math.h>

int func(int z)
{
       int x ,  y ;
       for (int i=10;z% i !=z ;i*=10)
       y = z % sqrt(i);
       x=( z - y ) / sqrt(i) ;
       if( (x+y) * (x+y)==z)
             return(z);
       else   return 0;
}

void main()
{
       int  a=10,b;
       while(a<99999999999)
       {
               b=func(a);
               if(b!=0)
                     printf("%d\n",a);
       }
}
18#
发表于 2013-8-22 21:55:42 | 只看该作者
#include <stdio.h>
#include<math.h>

int func(int z)
{
       int x ,  y ;
       for (int i=10;z% i !=z ;i*=10)
       y = z % sqrt(i);
       x=( z - y ) / sqrt(i) ;
       if( (x+y) * (x+y)==z)
             return(z);
       else   return 0;
}

void main()
{
       int  a=10,b;
       while(a<99999999999)
       {
               b=func(a);
               if(b!=0)
                     printf("%d\n",a);
       }
}
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表