bzoj1025

想到是lcm 但是没有想到这么奇怪的背包dp。。。

题解跪lsj

 1 #include<bits/stdc++.h>
 2 #define lowbit(a) ((a)&(-(a)))
 3 #define clr(a,x) memset(a,x,sizeof(a))
 4 #define rep(i,l,r) for(int i=l;i<(r);i++)
 5 typedef long long ll;
 6 using namespace std;
 7 int read()
 8 {
 9     char c=getchar();
10     int ans=0,f=1;
11     while(!isdigit(c)){
12         if(c=='-') f=-1;
13         c=getchar();
14     }
15     while(isdigit(c)){
16         ans=ans*10+c-'0';
17         c=getchar();
18     }
19     return ans*f;
20 }
21 const int maxn=1009,maxp=100000;
22 int n,cnt=1,p[maxp];
23 ll d[maxn][maxn];
24 bool isp[maxp];
25 void get_prime(){
26     clr(isp,-1);
27     rep(i,2,n+1){
28         if(isp[i]) p[cnt++]=i;
29         rep(j,1,cnt){
30             if(i*p[j]>n) break;
31             isp[i*p[j]]=0;
32             if(i%p[j]==0) break;
33         }
34     }
35 }
36 void solve(){
37     d[0][0]=1;
38     rep(i,1,cnt){
39         rep(j,0,n+1){
40             d[i][j]=d[i-1][j];
41             int t=1;
42             rep(k,0,n){
43                 t*=p[i];
44                 if(t>j) break;
45                 d[i][j]+=d[i-1][j-t];
46             }
47         }
48     }
49     ll ans=0;
50     rep(i,0,n+1) ans+=d[cnt-1][i];
51     cout<<ans;
52 }
53 int main()
54 {    
55     n=read();
56     get_prime();
57     solve();
58     return 0;
59 }
View Code

1025: [SCOI2009]游戏

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 1561  Solved: 979
[Submit][Status][Discuss]

Description

windy学会了一种游戏。对于1到N这N个数字,都有唯一且不同的1到N的数字与之对应。最开始windy把数字按顺序1,2,3,……,N写一排在纸上。然后再在这一排下面写上它们对应的数字。然后又在新的一排下面写上它们对应的数字。如此反复,直到序列再次变为1,2,3,……,N。 如: 1 2 3 4 5 6 对应的关系为 1->2 2->3 3->1 4->5 5->4 6->6 windy的操作如下 1 2 3 4 5 6 2 3 1 5 4 6 3 1 2 4 5 6 1 2 3 5 4 6 2 3 1 4 5 6 3 1 2 5 4 6 1 2 3 4 5 6 这时,我们就有若干排1到N的排列,上例中有7排。现在windy想知道,对于所有可能的对应关系,有多少种可能的排数。

Input

包含一个整数,N。

Output

包含一个整数,可能的排数。

Sample Input

【输入样例一】
3
【输入样例二】
10

Sample Output

【输出样例一】
3
【输出样例二】
16

HINT

 

【数据规模和约定】

100%的数据,满足 1 <= N <= 1000 。

 

Source

 
[Submit][Status][Discuss]
posted @ 2015-08-18 21:32  ChenThree  阅读(122)  评论(0编辑  收藏  举报