• 凉凉夜色为我思念成河


    想起了前天和我娇妻深情对唱凉凉,结果这两天真的透心凉,再也没有水题给我们做了。

    今早上大家集体爆0,然后在我wa+TLE了8发之后,上帝终于被我奋取的精神感动了,给了我一个accepted.

    这道题就是斐波拉契数列+快速幂取和+循环节点的计算,首先如果出现f[i]=f[1]&&f[i-1]=f[0]则出现循环,
    而对n的模数只有n种可能,故n^2内便出现循环。
    故,先求出循环节M,
    再求a^b%M,快速幂即可

    #include <iostream>
    #include<map>
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    #include<set>
    using namespace std;
    int f[1020100];
    int quickpow(unsigned long long a,unsigned long long b,int n)
    {
        unsigned long long ans=1,base=a;
        while(b)
        {
            if(b%2==1)
            {
                ans=(ans*base)%n;
            }
            base=(base*base)%n;
            b=b>>1;
        }
        return ans;
    }
    int main()
    {
        int t,m;
        int n;
        f[0]=0;
        f[1]=1;
        unsigned long long a,b;
        scanf("%d",&m);
        while(m--)
        {
            scanf("%llu%llu%d",&a,&b,&n);
            if(n==1||a==0)
            {
                printf("0
    ");
                continue;
            }
    
            for(int i=2; i<=n*n; i++)
            {
                f[i]=(f[i-1]%n+f[i-2]%n)%n;
                if(f[i-1]==0&&f[i]==1)
                {
                    t=i-1;
                    break;
                }
            }
            printf("%d
    ",f[quickpow(a%t,b,t)]);
    
        }
        return 0;
    }

    下一道题:

    这个题就是对容器的使用,然后注意比较的时候要全部转换成小写字母比较,然后它输出的时候,又要按照字母顺序先输出大写再输出小写,所以还要用一个容器存取它本来的大小写。

    #include <iostream>
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    #include<map>
    #include<vector>
    using namespace std;
    map<string,int> kepa;
    vector<string> t1,t2;
    int main()
    {
        string s;
        int i,j;
        while(cin>>s)
        {
            if(s[0]=='#')
                break;
            t1.push_back(s);
            int len=s.length();
            for(i=0; i<len; i++)
            {
                if(s[i]>='A'&&s[i]<='Z')
                {
                    s[i]+=32;
                }
            }
            sort(s.begin(),s.end());
            kepa[s]++;
        }
        for(i=0; i<t1.size(); i++)
        {
            string s1=t1[i];
            for(j=0; j<s1.length(); j++)
            {
                if(s1[j]>='A'&&s1[j]<='Z')
                {
                    s1[j]+=32;
                }
            }
            sort(s1.begin(),s1.end());
            if(kepa[s1]==1)
            {
                t2.push_back(t1[i]);
            }
        }
        sort(t2.begin(),t2.end());
        for(i=0; i<t2.size(); i++)
        {
            cout<<t2[i]<<endl;
        }
        return 0;
    }

    水逆退散!阿门!

  • 相关阅读:
    Python 高级编程系列__03:python 中常见的内置类型
    Python 高级编程系列__02:type、object、class 的关系
    Python 高级编程系列__01:一切皆对象
    Mac 修改默认python的版本
    swap指令实现互斥
    什么是进程同步?wait( )是如何实现进程同步的?
    可执行文件加载时进行了哪些处理?
    C++不允许使用不完整的类型说明
    error LNK2019: 无法解析的外部符号
    抽屉原理——放苹果
  • 原文地址:https://www.cnblogs.com/kepa/p/9397160.html
Copyright © 2020-2023  润新知