#include<iostream>usingnamespace std;typedeflonglong ll;ll f[25][25][25];ll dfs(ll a, ll b, ll c){if(a <=0|| b <=0|| c <=0)return1;if(f[a][b][c])return f[a][b][c];ll t;if(a >20|| b >20|| c >20) t =dfs(20,20,20);elseif(a < b && b < c) t =dfs(a, b, c -1)+dfs(a, b -1, c -1)-dfs(a, b -1, c);else t =dfs(a -1, b, c)+dfs(a -1, b -1, c)+dfs(a -1, b, c -1)-dfs(a -1, b -1, c -1);f[a][b][c]= t;return f[a][b][c];}intmain(){ll a, b, c;while(scanf("%lld%lld%lld",&a,&b,&c)==3){if(a ==-1&& b ==-1&& c ==-1)break;printf("w(%lld, %lld, %lld) = ", a, b, c);if(a >21) a =21;if(b >21) b =21;if(c >21) c =21;printf("%lld\n",dfs(a, b, c));}}
#include<iostream>usingnamespace std;constint N =1010;int f[N][N];int len =1;intmain(){int m, n;cin >> m >> n;f[1][1]=1;f[2][1]=1;for(int i =3; i <= n - m +1;++ i){for(int j =1; j <= len;++ j){f[i][j]= f[i -1][j]+ f[i -2][j];}for(int j =1; j <= len;++ j){f[i][j +1]+= f[i][j]/10;f[i][j]%=10;}if(f[i][len +1]) len ++;}for(int i = len; i; i --)cout << f[n - m +1][i];}
#include<iostream>#include<cmath>usingnamespace std;boolis_prime(int x){double t =sqrt(x);for(int i =2; i <= t;++ i){if(x % i ==0)returnfalse;}returntrue;}int a[25];int n, k, ans;voiddfs(int sel,int sum,int st){if(sel == k +1){if(is_prime(sum))ans ++;return;}for(int i = st; i <= n;++ i){dfs(sel +1, sum + a[i], i +1);}return;}intmain(){cin >> n >> k;for(int i =1; i <= n;++ i)cin >> a[i];dfs(1,0,1);cout << ans;}
P1990 覆蓋墻壁
一個整數N(1<=N<=1000000),表示墻壁的長。
取后四位,也就是說%1e4
#include<iostream>usingnamespace std;constint N =1e6+10;constint mod =1e4;int f[N], g[N];intmain(){int n;cin >> n;f[0]=1; f[1]=1;g[0]=0; g[1]=1;for(int i =2; i <= n;++ i){f[i]=((f[i -1]+ f[i -2])% mod +2* g[i -2]% mod)% mod;g[i]= f[i -1]+ g[i -1]% mod;}cout << f[n];}