1432: [ZJOI2009]Function
Time Limit: 5 Sec Memory Limit: 64 MBDescription

Input
一行两个整数n; k。
Output
一行一个整数,表示n 个函数第k 层最少能由多少段组成。
Sample Input
1 1
Sample Output
1
HINT
对于100% 的数据满足1 ≤ k ≤ n ≤ 100。
Source
找规律题;
设f[i][j]是i个函数,第j层的段数;
f[1][1]=1;
f[2][1]=2; f[2][2]=2;
f[3][1]=2; f[3][2]=4; f[3][3]=2;
f[4][1]=2; f[4][2]=4; f[4][3]=4; f[4][4]=2;
f[5][1]=2; f[5][2]=4; f[5][3]=6; f[5][4]=4; f[5][5]=2;
........
发现 f[i][j]=f[i][i-j+1];
f[i][j]=j*2(j<=n/2);
将1,1特判就行了;
#include<cstdio> #include<cstring> #include<algorithm> #include<iostream> using namespace std; int n,k; int main(){ scanf("%d%d",&n,&k); if(n==1&&k==1){ printf("1"); return 0; } if(k>n/2) k=n-k+1; printf("%d",k*2); }