【题目】
1225: Give me the answer
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 176 Solved: 66
[Submit][Status][Web Board]
Description
Farmer John commanded his cows to search for different sets of numbers that sum to a given number.
The cows use only numbers that are an integer power of 2. Here are the possible sets of numbers that
sum to 7:
1) 1+1+1+1+1+1+1
2) 1+1+1+1+1+2
3) 1+1+1+2+2
4) 1+1+1+4
5) 1+2+2+2
6) 1+2+4
Help FJ count all possible representations for a given integer N (1 <= N <= 1 ,000,000)
Input
The first line of the input contains the number of test cases in the file. And t he first line of each case
contains one integer numbers n
Output
For each test case, output a line with the ans % 1000000000.
Sample Input
1
7
Sample Output
6
【题解】
类似跳台阶
我们用f[i]记录分i只牛的不同种数,题目要求是只能分为2的n次幂,我们发现当i为偶数时,f[i]=f[i+1].
推导如下:
如果还是不懂,见变态跳台阶
【代码】
#include<bits/stdc++.h>
using namespace std;
const int mod=1000000000;
int f[1000005];
void init()
{
int i,sum;
f[0]=1,f[1]=1;
for(i=2;i<=1000000;i++)
if(i%2==0)
f[i]=(f[i-2]+f[i/2])%mod;
else
f[i]=f[i-1];
}
int main()
{
int t,n;
init();
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
printf("%d\n",f[n]);
}
return 0;
}
【题目】
1265: 数三角形
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 562 Solved: 315
[Submit][Status][Web Board]
Description
给定一个等边三角形,它的每条边被分成n等分,分别用平行于三边的直线过各个n等分点截这个三角形,如图所示:
请问,图中总共有多少个三角形?
Input
输入包含多组测试数据,直至EOF。
每组测试数据包含一个正整数n,表示三角形三边被分为了n等份(n<500)。
Output
输出三角形的个数。
Sample Input
1
2
3
Sample Output
1
5
13
【...】
这是一道数学题
【代码】
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(~scanf("%d",&n))
{
if(n%2)
printf("%d\n",(n+1)*(2*n*n+3*n-1)/8);
else
printf("%d\n",n*(n+2)*(2*n+1)/8);
}
return 0;
}