神论教主 发表于 2014-1-11 16:35:13

求指点!!!

有一道题:一个整数,在10万以内,加100能开方,在加168还能开方,输出这个数!
这个程序该怎么写啊,想了好久没头绪!!

牡丹花下死做鬼 发表于 2014-1-11 16:35:14

本帖最后由 牡丹花下死做鬼 于 2014-1-12 00:46 编辑

#include<stdio.h>#include<stdio.h>
#include<math.h>

int main ()
{
        long int i;//定义变量 100000超过65535
        int j;
        j = 11;
        for(i = 0;i<100000;i = j * j - 100)//让i每次变为j * j - 100 就保证+100可以开发
        {
                if((int)(sqrt(i + 168)) * (int)(sqrt(i + 168)) == (i + 168))//在判断下+168是否可开方即可
                {
                        printf("%ld\n",i);
                }
                j++;
        }
        return 0;
}

不懂可以追问我还有一个星期放假 周一~周日可能无法在线

向往青莲 发表于 2014-1-11 19:34:23

开方? 开平方? 开立方? 都开?
5不也能么。。。开平方。。开立方都可以。。。
这题描述都有问题。。我擦

神论教主 发表于 2014-1-11 20:47:15

向往青莲 发表于 2014-1-11 19:34 static/image/common/back.gif
开方? 开平方? 开立方? 都开?
5不也能么。。。开平方。。开立方都可以。。。
这题描述都有问题。。我 ...

开平方!!!!!!

machimilk 发表于 2014-1-11 22:03:19

本帖最后由 machimilk 于 2014-1-11 22:08 编辑

#include "stdafx.h"
#include<stdio.h>
#include <cmath>
#include <iostream>
int main()
{
for (int i=1;i<100000;i++)//定义i从1到100000循环加1
{
        float j=i+100;//先让i+100再开方看看能不能
        if (sqrt(j)- (int)sqrt(j)==0)//如果能就再加168试试
        {
                if (sqrt(j+168)- (int)sqrt(j+168)==0)//又加了168后还能开方就打印没+100和+168之前的那个数
                {
                        printf("%d\n",i);
                }
        }
}
system("pause");
return 0;
}

结果算出21 261 1581因为21+100=121(可以开方) 121+168=289(可以开方)多了就不打了...........

牡丹花下死做鬼 发表于 2014-1-12 00:46:34

machimilk 发表于 2014-1-11 22:03 static/image/common/back.gif
#include "stdafx.h"
#include
#include


我的到的结果是只有一个答案 156

神论教主 发表于 2014-1-12 01:08:54

牡丹花下死做鬼 发表于 2014-1-12 00:38 static/image/common/back.gif
不懂可以追问我还有一个星期放假 周一~周日可能无法在线

恩,看来我的先把语法学完才能解这道题谢啦

神论教主 发表于 2014-1-12 01:10:23

牡丹花下死做鬼 发表于 2014-1-12 00:46 static/image/common/back.gif
我的到的结果是只有一个答案 156

我再一个群里问过,有人给了个程序和他的答案一样,至于到底是多少还要研究,C语言太深了

神论教主 发表于 2014-1-12 01:10:57

machimilk 发表于 2014-1-11 22:03 static/image/common/back.gif
#include "stdafx.h"
#include
#include


非常感谢!!

maomingkun 发表于 2014-1-12 15:50:13

牡丹花下死做鬼 发表于 2014-1-11 16:35 static/image/common/back.gif
不懂可以追问我还有一个星期放假 周一~周日可能无法在线

加100能开方,在加168还能开方   这个应该是i+100能开方,i+268也能开方,你的代码……
我觉得应该是
#include<stdio.h>
#include<math.h>

int main ()
{
      long int i;//定义变量 100000超过65535
      int j;
      j = 11;
      for(i = 0;i<100000;i++)//让i每次变为j * j - 100 就保证+100可以开发
      {
            if((int)(sqrt(i + 100)) * (int)(sqrt(i + 100)) == (i + 100))//在判断下+168是否可开方即可
            {
                  if((int)(sqrt(i + 268)) * (int)(sqrt(i + 268)) == (i + 268))//在判断下+168是否可开方即可
                  {
                        printf("%d\n",i);
                  }
                  
            }
            
      }
      return 0;
}

a799130333 发表于 2014-1-18 10:58:59

路过                                    
页: [1]
查看完整版本: 求指点!!!