Problem G: qwb去面试
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1837 Solved: 314
[ Submit][ Status][ Web Board]
Description
qwb比较猥琐,借故上厕所偷偷上网求助,聪明的你能帮助他吗?
Input
接下来T行,每行一个正整数n(n<=1e9),意义如题目所述。
Output
Sample Input
2
2
5
Sample Output
26
想法:
把一个数拆成3和其他(0,4,2)
然后相乘
代码: #include <stdio.h> #include <math.h> #define MOD 1000000007 long long find(int x,long long n) { long long a=x; long long ans=1; while (n) { if(n&1) ans=ans*a%MOD; a=a*a%MOD; n>>=1; } return ans; } int main() { int pp; scanf("%d",&pp); while(pp--) { long long n; long long ans=0; scanf("%lld",&n); if (n<4) printf("%d\n",n); else { if (n%3==0) ans=find(3,n/3); if (n%3==1) ans=(4*find(3,(n-3)/3))%MOD; if (n%3==2) ans=(2*find(3,n/3))%MOD; printf("%lld\n",ans); } } return 0; }