24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1041  |  回复: 12
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

freedomice

金虫 (正式写手)

[求助] 求组一个c程序问题

题目:由n个1组成的整数能被2011整除,求n至少为多大?
代码如下。经调试当运行到9个1的时候,数据变成负的,疑为溢出,但不知道到底是哪里出问题了?
#include
#define N 2011
void main()
{
        long a=1,n=0;

        while(a%N)
        {
                a=10*a+1;
                n++;
        }
        printf("%ld",a);

}
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

freedomice

金虫 (正式写手)

送鲜花一朵
引用回帖:
2楼: Originally posted by lurencyj at 2012-04-20 16:06:14:
确实是溢出问题。
我的C++代码:

#include <iostream>
#include <limits>

using namespace std;

int main(int argc, char *argv[])
{
                long a = 1, n = 1;

                while(a%2011)
                {
         ...

非常感谢
我还是不明白问题在哪里
为什么我的到9位就溢出了
3楼2012-04-20 16:18:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

freedomice

金虫 (正式写手)

送鲜花一朵
引用回帖:
5楼: Originally posted by lurencyj at 2012-04-20 16:33:22:
补充一下:
8位的long,最大数值为1.8447E19
4位的long,最大数值为4.295E9

谢谢
差不多知道原因了
用的是vc6
我用excel算过一下
9位的时候数字远小于2^64-1
可能正好是2^32-1的界点
6楼2012-04-20 17:15:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 freedomice 的主题更新
信息提示
请填处理意见