| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1009 人关注过本帖
标题:程序没有结果
只看楼主 加入收藏
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
结帖率:89.66%
收藏
已结贴  问题点数:20 回复次数:22 
程序没有结果
一个由1-9排列所组成的9位数(即每个数字刚好都用了一次),满足前n位被n整除,问这个数是多少
比如123456789,前5位是12345需要被5整除这样 !!这是我看帖的时候看到的!我写了一个,但是没结果,请教!!
程序代码:
          #include <stdio.h>

          int main()

          {   int n,k1,k2,k3,k4,k5,k6,k7,k8;

              for(n=100000000;n<=999999999;n++)

               k1=n/10;

               k2=n/100;

               k3=n/1000;

               k4=n/10000;

               k5=n/100000;

               k6=n/1000000;

               k7=n/10000000;

               if(((n%9==0)&&(k1%8==0)&&(k2%7==0)&&(k3%6)==0&&(k4%5==0)&&(k5%4==0)&&(k6%3==0)&&(k7%2)==0)==1)

               printf("%d",n);

              getch();

          }
不知道思路对不对,还请各位大侠指点了!
搜索更多相关主题的帖子: 结果 
2010-10-10 23:40
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:1 
你这么的k1,k2,k3你不累么?

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-10-10 23:48
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
收藏
得分:0 
还请斑竹指点啊!!

付出终将有回报!Ibelieve!
2010-10-10 23:52
易哓天
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:80
专家分:105
注 册:2010-9-20
收藏
得分:1 
#include <stdio.h>

          void main()

          {   int n,k[9],i;

              for(n=100000000;n<=999999999;n++)
              for(i=0;i<9;i++)
              {
                  k[i]=n/10;
                  if((k[i]%(i+1))!=0)
                      continue;
              }
              
               printf("%d\n",n);

      

          }
跟你的一个思路,在我机子上大约跑二分钟,最后输出1000000000,可能没有这样的数吧,不知哪个大侠,这找一下

[ 本帖最后由 易哓天 于 2010-10-11 00:09 编辑 ]

匈奴未灭,何以为家
2010-10-11 00:06
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:0 
因为你代码的确错了,注意是前n位被n整除

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-10-11 00:28
chfplang
Rank: 1
来 自:河北
等 级:新手上路
帖 子:10
专家分:2
注 册:2009-7-23
收藏
得分:1 
虽然我只是个业余爱好者,可我好喜欢御坂美琴的说话风格 估计也是个高手吧 呵呵
2010-10-11 00:56
whbc
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:180
专家分:139
注 册:2010-3-31
收藏
得分:0 
谁给个解释啊?

付出终将有回报!Ibelieve!
2010-10-11 15:38
EastHP
Rank: 2
来 自:北京海淀
等 级:论坛游民
帖 子:33
专家分:24
注 册:2010-9-30
收藏
得分:1 
思路可以,但是出现一些错误。for循环体没有用{}括起来。
程序代码:
 #include <stdio.h>

          int main()

          {   int n,k1,k2,k3,k4,k5,k6,k7;

              for(n=100000000;n<=999999999;n++)

              {k1=n/10;

               k2=n/100;

               k3=n/1000;

               k4=n/10000;

               k5=n/100000;

               k6=n/1000000;

               k7=n/10000000;

               if(((n%9==0)&&(k1%8==0)&&(k2%7==0)&&(k3%6)==0&&(k4%5==0)&&(k5%4==0)&&(k6%3==0)&&(k7%2)==0)==1)

               printf("%d\n",n);
              }
              

          }


 
2010-10-11 17:10
zghnxzdcx
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:550
专家分:1176
注 册:2010-4-6
收藏
得分:1 
第一,int在C语言中的变量在内存中只占两个字节,也就是只有16位,-32768 到 32767,你的程序中的变量明显是超范围的。

第二,你的程序中的循环中有大量的无效运算,时间开销非常的大。

第三,你需要做的,只是遍历1至9的全排列,而不是遍历用大量的无效运算来做。

你永远不可能战胜一个纯傻子,因为他会把你的智商拉到和他同一个水平,然后用他的丰富经验打败你。
2010-10-11 17:18
EastHP
Rank: 2
来 自:北京海淀
等 级:论坛游民
帖 子:33
专家分:24
注 册:2010-9-30
收藏
得分:0 
在标准C++中的int的字节长度小于long大于short就行了,多数平台上int占4个字节(32位,不是16位!),所以能表示的范围就是2的32次方,表示为数值是-2^(32-1) ~ 2^(32-1) -1 ( ^ 表示成方 )(就是 -2^31 ~ 2^31 - 1, 而不是2^16...)
根据不同的需要,int包括以下定义:
unsigned short int 无符号2字节短整形
short int          带符号2字节短整形 - 32768 ~ 32767
unsigned int       无符号4字节整形   0 ~ 2^32 -1  (这个是对的)
int                4字节整形         - 2^31 ~ 2^31 - 1
int 64             64位(8字节)整形 - 2^63 ~ 2^63 - 1 (这个很少用到,一般是表示为高位int和低位int,贝式弧现对它的范围也给错了)
2010-10-11 18:50
快速回复:程序没有结果
数据加载中...
 
   



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

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