求解用C语言完成几道简单题目,求AC过

2025-06-27 23:09:10
推荐回答(1个)
回答1:

1012的题目应该是你没有考虑-2^63没有相应的正整数表示(-2^63<=n<=2^63-1),所以AC代码如下:

#include 
int main(){
    char s[23];
    while(scanf("%s", s) == 1){
        if(s[0] == '-')
            printf("%s\n", &s[1]);
        else
            printf("%s\n", s);
    }
    return 0;
}

1013的话,由于是斐波那契数列,而n<=1000000,那么如果去计算这个数的话,肯定超出整数范围且必然超时,方法是找出数列被3整数的规律,AC代码如下;

#include 
int main(){
    int n;
    char r[8] = {1,2,0,2,2,1,0,1};
    while(scanf("%d", &n)!=EOF){
        n %= 8;
        if(r[n] == 0)
            printf("yes\n");
        else
            printf("no\n");
    }
}

这里的关键是r[8]数组,1,2表示F[0]和F[1]被3除余1和2,之后F[2]必然是11+7余0,F[3]是2+0=2余2,F[4]是2+2=4余1,直到F[7]余1,会发现之后的数字均是此规律。