1869: Mathematics and Geometry
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 249 Solved: 71
SubmitStatusWeb Board
Description
给你一个n,求方程 2x + y + 2z = n 解的个数,其中x, y, z, n 都是非负整数
Input
第一行一个整数T(T<=1000),表示测试数据组数,接着T行,每行一个整数n(n<=1000000)
Output
每组数据输出一行Case #x: ans 其中x表示样例组数,ans表示解的个数
Sample Input
Sample Output
HINT
Source
//zzulioj1869(思维)
//题目大意:给你一个n,求方程 2x + y + 2z = n 解的个数,其中x, y, z, n 都是非负整数.
//由题意:可得2(x+z)+y=n;可以看出y的范围是[1..n],只有n-y的值是偶数时才有解.然后看(x+z)有多少
//个方式组合成(n-y)/2就有多个解.研究一下可得,某个数n可拆分成两数之和的方案为n+1;例如2:(1,1),(2,0),(0,2).
//所以可得方程解得方案数{ k=n/2+1; 方案数S=(k*(k+1))/2;}
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int main()
{
long long t,i,j,k,ca=1,n,cnt;
scanf("%lld",&t);
while(t--)
{
scanf("%lld",&n);
if(n%2==1) n-=1;
k=n/2+1;
cnt=(k*(k+1))/2;
printf("Case #%lld: %lld\n",ca++,cnt);
}
return 0;
}