c 性能分析时间限制编写该程序的目的的详细信息在链接上给出:https://www.spoj.com/problems/CRCLE_UI/ https://www.spoj.com/problems/CRCLE_UI/
并且错误超过时间限制
#include<stdio.h>
const int mod=1000000007;
int cal(int a, int b){
long long x=1,y=a;
while(b){
if(b&1)x=x*y;
if(x>=mod)x=x-(x/mod)*mod;
y=y*y;
if(y>=mod)y=y-(y/mod)*mod;
b>>=1;
}
return x;
}
int main(){
int t, n, k;
long long ans,a1;
for(scanf("%d",&t);t--;){
scanf("%d %d", &n, &k);;t--;
k--;
if(k>=mod)k%=mod;
ans=(long long)k;
if(n&1)ans=ans*(-1);
a1=cal((int)k,n);
printf("%lld\n",(a1+ans+mod)%mod);
}
}
该问题的设计使得不可能直接通过对 n 求幂来计算结果。任何此类尝试都将超出可用资源。你必须使用一些数论来解决这个问题,特别是费马小定理 https://en.m.wikipedia.org/wiki/Fermat%27s_little_theorem。此外,您不能使用scanf
处理输入的数字,但必须自己逐个字符地读取它们,并使用数论来减少它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)