回 帖 发 新 帖 刷新版面

主题:高手进进,有个问题啊~~~~~速度

求2-1000的守行数
(若某数的平方,其低位与原数相等!!!!该数为守行数~~~~)
谁来教教我
哥哥姐姐行行好把``````
速度啊

回复列表 (共23个回复)

21 楼

我的算法的原理是:
既然“守行数”(X)与它的平方数(X^2)的低位相等,
那么它的平方减去它所得的结果(X^2-X)必然是整十或整百或整千的数,
当然具体是哪一种要看X的位数,
如果X只有一位,那么X^2-X是整十;
如果X只有两位,那么X^2-X是整百;
如果X只有三位,那么X^2-X是整千;
所以X^2-X除以10、100、1000后的余数必然为0
......

22 楼

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

void main()
{
    int a,b,c,d,i;

    for(a=2;a<=1000;a++){
        b=(int)pow(a,2);

        i=1;
        c=(int)pow(10,i);
        
        while(b/c != 0)
        {
            i++;
            c=(int)pow(10,i);
        }

        d=b-(b/(int)pow(10,i-1))*(int)pow(10,i-1);

        if(d==a)printf("%d\n",a);
    }
}


23 楼

[quote]我的算法的原理是:
既然“守行数”(X)与它的平方数(X^2)的低位相等,
那么它的平方减去它所得的结果(X^2-X)必然是整十或整百或整千的数,
当然具体是哪一种要看X的位数,
如果X只有一位,那么X^2-X是整十;
如果X只有两位,那么X^2-X是整百;
如果X只有三位,那么X^2-X是整千;
所以X^2-X除以10、100、1000后的余数必然为0
......[/quote]


这个不错!厉害!

我来回复

您尚未登录,请登录后再回复。点此登录或注册