递推
No.1 (钱币兑换)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include<iostream> typedef long long ll; using namespace std; ll dp[32800]; void init() { dp[0]=1; for(int i=1;i<=3;i++) { for(int j=i;j<=32768;j++) dp[j]+=dp[j-i]; } } int main() { int N; init(); while(cin>>N)cout<<dp[N]<<endl; return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include<iostream> using namespace std; int m[1000020]; int main() { int N,K; cin>>N>>K; m[1]=0; for(int i=2;i<=N;i++) m[i]=(m[i-1]+K)%i; cout<<m[N]+1<<endl; return 0; } |