标题:实在不知道怎么办了
只看楼主
简单回忆
Rank: 2
来 自:郴州
等 级:论坛游民
帖 子:89
专家分:28
注 册:2011-3-19
结帖率:96.15%
已结贴  问题点数:16 回复次数:4 
实在不知道怎么办了
     若一个四位正整数是另一个正整数的平方,且各位数字的和是一个平方数,则称该四位正整数是“四位双平方数”。例如: 由于7396=86^2,且7+3+9+6=25=5^2,则称7396是“四位双平方数”。求所有“四位双平方数”之和。    81977

#include"math.h"
main()
{
long i,s;
int a,b,c,d,j,t1,t2;
clrscr();
s=0;
for(i=1000;i<=9999;i++)
{
a=i/1000;
b=i%1000/100;
c=i%10/10;
d=i%10;
j=a+b+c+d;
t1=sqrt(i);
t2=sqrt(j);
if(t1+t1==i&&t2+t2==j)
s=s+i;
}
printf("%ld",s);     我这样做完了之后没错      就是答案不正确啊!!求指点!!!!!!我用的tc2.0的
}
搜索更多相关主题的帖子: long 答案 正整数 
2011-05-13 12:55
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
得分:0 

就这几句代码你都懒的看,还是趁早别学了

技术问题,请不要以短消息方式提问
2011-05-13 13:56
tisyang
Rank: 8Rank: 8
等 级:蝙蝠侠
帖 子:132
专家分:737
注 册:2011-5-7
得分:16 
程序代码:
#include <stdio.h>
#include <math.h>
int main()
{
  int a,b,c,d,sum,m;
  int s,total;
  sum = 0;
  total = 0;
  for (m=1000; m<10000; m++)
    {
      a=m/1000;
      b=(m/100)%10;
      c=(m/10)%10;
      d=m%10;

      sum = a+b+c+d;
      if(sum == 4 || sum == 9 || sum == 16 ||sum == 25)
        {
          for(s = sqrt(1000)+1; s < sqrt(10000)+1; s++)
            {
              if(m == s*s)
                {
                  printf("%d = %d^2 \t %d + %d + %d + %d = %d \n", m, s,
                         a, b, c, d, sum);
                  total+=m; 
                }
            }
        }
    }

  printf("Total = %d\n", total);
  return 0;
}


if(sum == 4 || sum == 9 || sum == 16 ||sum == 25) 这个判断可以提高效率,因为四个数的和范围为 1~36 (1000~9999)
但是双平方数不可能是 1000 和 9999 所以只会是 4 9 16 和 25 了。
结果显示:
1521 = 39^2      1 + 5 + 2 + 1 = 9
1681 = 41^2      1 + 6 + 8 + 1 = 16
2025 = 45^2      2 + 0 + 2 + 5 = 9
2304 = 48^2      2 + 3 + 0 + 4 = 9
2601 = 51^2      2 + 6 + 0 + 1 = 9
3364 = 58^2      3 + 3 + 6 + 4 = 16
3481 = 59^2      3 + 4 + 8 + 1 = 16
3600 = 60^2      3 + 6 + 0 + 0 = 9
4489 = 67^2      4 + 4 + 8 + 9 = 25
4624 = 68^2      4 + 6 + 2 + 4 = 16
5776 = 76^2      5 + 7 + 7 + 6 = 25
5929 = 77^2      5 + 9 + 2 + 9 = 25
7225 = 85^2      7 + 2 + 2 + 5 = 16
7396 = 86^2      7 + 3 + 9 + 6 = 25
8100 = 90^2      8 + 1 + 0 + 0 = 9
8836 = 94^2      8 + 8 + 3 + 6 = 25
9025 = 95^2      9 + 0 + 2 + 5 = 16
Total = 81977


[ 本帖最后由 tisyang 于 2011-5-13 14:17 编辑 ]

C++ 用无参数构造函数生成对象时候请勿在构造函数后添加无用的那一对括号,否则有可能会被当成函数声明而忽略,嗯,栈上构建的时候就是这样。
2011-05-13 14:06
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
得分:0 
int i,a,b,c,d;
for(i=1000;i<=9999;i++)
{if(!(sqrt(i)-(int)sqrt(i)))
{a=i%10;
b=i/10%10;
c=i/100%10;
d=i/1000;
int sum=a+b+c+d;
if(sqrt(sum)-(int)sqrt(sum)==0)
printf("%d,",i);
}}
2011-05-13 14:11
简单回忆
Rank: 2
来 自:郴州
等 级:论坛游民
帖 子:89
专家分:28
注 册:2011-3-19
得分:0 
回复 2楼 zaixuexi
懂了!是我的粗心
2011-05-14 15:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-339720-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021224 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved