2019浙江省程序设计竞赛 I:Fibonacci in the Pocket(简单思维)

版权声明:本文为博主原创文章,顺手点个赞叭~有问题欢迎指出(*╹▽╹*) https://blog.csdn.net/qq_41117236/article/details/89674444

【题面】

Fibonacci in the Pocket

【题解】

题意:斐波那契数列,给定a,b,如果  \sum_{i=a}^{b}fi 结果为偶数则输出0,奇数则输出1。数据范围 1\leq a\leq b<10 ^{10000}

思路: 这也太简单了8我靠..俩傻子队友比赛的时候搞半天大数,早知道管管他们了(小声bb)。

根据斐波那契数列的性质,易得数列前缀和奇偶性规律为 1 0 0 1 0 0 1 0 0... 循环节为3,我们都知道3的倍数有个规律就是各位上数字的和也整除3,所以我们可以直接字符串存储取出每一位的数字求和,判断[1,b]-[1,a-1]前缀和之差的奇偶性即可,我们可以把求前缀和之差判断奇偶性转换个思路,奇数-奇数==偶数-偶数==偶数,奇数-偶数==偶数-奇数==奇数,所以只需要判断一奇一偶的情况输出1否则输出0即可。

【代码】

#include <bits/stdc++.h>
using namespace std;
#define ll long long
char a[10005],b[10005];
int main()
{
    int t; scanf("%d",&t);
    while(t--){
        scanf("%s %s",a,b);
        int c=0,d=0;
        for(int i=0;i<strlen(a);i++)
            c+=a[i]-'0';
        c--;
        for(int i=0;i<strlen(b);i++)
            d+=b[i]-'0';
        printf("%d\n",(c%3==1&&d%3!=1)||(c%3!=1&&d%3==1));
    }
    return 0;
}

 

展开阅读全文

没有更多推荐了,返回首页