저는 이 문제를 등비수열의 합으로 봤는데요
초항이 start이고 N이 공비라고 두었습니다.
값이 작을 때는 잘나오는거 같은데 커지면 문제가 발생합니다.
MOD연산에서 문제가 발생하는 것 같은데
만약 a/b(mod n) 일때 b하고 n이 서로소 이면 결과값이 상관 없는걸루
알고있는데.. 아닌가요??
#include<cstdio>#define MOD 1000000007longlongpower(longlonga,longlongb){longlongpow=1;while(b){if(b&1){pow=(pow*a)%MOD;--b;}a=(a*a)%MOD;b=b/2;}returnpow;}intmain(){freopen("input.txt","r",stdin);intt;scanf("%d",&t);while(t--){longlongans=0,start,NpowerR;longlonga,b,N,sub;scanf("%lld%lld%lld",&a,&b,&N);sub=b-a+1;if(N==1)printf("%lld\n",sub);else{start=power(N,a);NpowerR=power(N,sub);ans=((start*((NpowerR-1))/(N-1)))%MOD;printf("%lld\n",ans);}}}
vi1409
BRUTEFORCE
저는 이 문제를 등비수열의 합으로 봤는데요
초항이 start이고 N이 공비라고 두었습니다.
값이 작을 때는 잘나오는거 같은데 커지면 문제가 발생합니다.
MOD연산에서 문제가 발생하는 것 같은데
만약 a/b(mod n) 일때 b하고 n이 서로소 이면 결과값이 상관 없는걸루
알고있는데.. 아닌가요??
10년 전