题解 | #自守数#

自守数

http://www.nowcoder.com/practice/88ddd31618f04514ae3a689e83f3ab8e

先求出SIZE内所有的自守数,再查表寻找即可
#include <stdio.h>
#include <string.h>

#define SIZE 10000
int arr[100];    //自守数数组

void getnum(int size);
int checknum(int num);

int main(void)
{
    getnum(SIZE);
    int num;
    
    while(scanf("%d",&num)!=EOF){
        printf("%d\n",checknum(num));
    }
    
    return 0;
}

void getnum(int size)
{
    int i,j,tmp;
    
    arr[0] = 1,arr[1] = 5,arr[2] = 6;    //前四个自守数易得
    for(i=7,j=3;i<=SIZE;i++){
        if(i<10) tmp = 10;
        else if(i<100) tmp = 100;
        else if(i<1000) tmp = 1000;
        else if(i<10000) tmp = 10000;
        else tmp = 100000;
        if((i*i - i) % tmp == 0){
            arr[j++] = i;    //记录自守数
        }
    }
}

int checknum(int num)
{
    int i = 0;        //因为要判断0,所以自守数数组内没有0,输出要+1多一个
    while(num >= arr[i] && arr[i]!=0) i++;
    return i+1;
}


全部评论

相关推荐

06-26 10:08
门头沟学院 C++
北京Golang实习,一个月4700,吃住都不报,公司位置在海淀。请问友友怎么看呢?如果要租房的话有什么建议吗
码农索隆:租房肯定是合租了,剩下的钱,差不多够正常吃饭了,看看能不能学到东西吧
点赞 评论 收藏
分享
每晚夜里独自颤抖:这个在牛客不是老熟人了吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务