A题:手速题,排序
C题:思维清晰题,分类讨论
E题:思维清晰题,找规律,(pow的时间复杂度是O(n)!!!)
#include <iostream> #include <math.h> #include <stdio.h> using namespace std; long long a[10000005]; int main() { a[1]=0; a[2]=3; a[3]=6; a[4]=21; /*for(int i=5;i<=1000;i++){ //a[i]=((int)pow(3.0,double(i-1))-a[i-1])%1000000007; int sum=1; for(int j=0;j<i-1;j++){ sum*=3; } a[i]=(sum-a[i-1])%1000000007; }*/ int n; while(cin >> n) { for(int i=5;i<=n;i++){ if(i%2==1) a[i]=(a[i-1]-1)*3%1000000007; else a[i]=(a[i-1]+1)*3%1000000007; } //for(int i=1;i<=n;i++) // cout << a[i] <<endl; cout <<a[n] <<endl; } }
在Codeforces中,如果遇到数特别大,要求MOD(109 + 7)时,被MOD的数应该保证是long long型。