Here's the problem from last year's ACM ICPC Dhaka Regional Preliminary Round.
It says to calculate sod(n) [sum of digits of n] while n >= 10. Here n = a^b, (0<= a,b <= 10^50,000 and a+b>0 ) Any thoughts on how to solve this?
| # | User | Rating |
|---|---|---|
| 1 | Benq | 3676 |
| 2 | Kevin114514 | 3659 |
| 3 | jiangly | 3640 |
| 4 | turmax | 3450 |
| 5 | tourist | 3382 |
| 6 | strapple | 3360 |
| 7 | Um_nik | 3354 |
| 8 | squareOf105 | 3348 |
| 9 | maroonrk | 3312 |
| 10 | idontwannadothis…e | 3191 |
| # | User | Contrib. |
|---|---|---|
| 1 | Qingyu | 155 |
| 2 | nik_exists | 151 |
| 3 | maspy | 149 |
| 4 | AmShZ | 145 |
| 5 | Um_nik | 143 |
| 6 | Errichto | 139 |
| 7 | BledDest | 136 |
| 8 | adamant | 134 |
| 9 | maroonrk | 132 |
| 10 | cry | 130 |
Here's the problem from last year's ACM ICPC Dhaka Regional Preliminary Round.
It says to calculate sod(n) [sum of digits of n] while n >= 10. Here n = a^b, (0<= a,b <= 10^50,000 and a+b>0 ) Any thoughts on how to solve this?
I was trying to solve a problem on LightOJ which says to calculate C(n,r) modulo P where (1<=n,r<=1000000 and P=1000003). It has at most 2000 queries.
I found this solution on the web,but I can not find how it works. can anyone explain it please?
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+3;
const int mod=1e6+3;
ll A[N],B[N];
ll bigmod(ll n,ll p)
{
if(p==0)return 1LL;
if(p&1)return ((n%mod)*bigmod(n,p-1))%mod;
ll a=bigmod(n,p/2);
return (a*a)%mod;
}
int main()
{
int tc;
scanf("%d",&tc);
A[1]=B[1]=1;
A[0]=B[0]=1;
for(int i=2;i<N;++i){
A[i]=(A[i-1]*i)%mod;
B[i]=(B[i-1]*bigmod((ll)i,mod-2))%mod;
}
for(int cs=1;cs<=tc;++cs){
int n,r;
scanf("%d%d",&n,&r);
printf("Case %d: %lld\n",cs,(A[n]*((B[n-r]*B[r])%mod))%mod);
}
return 0;
}
| Name |
|---|


