zzulioj1869

来源:互联网 发布:红帽子linux下载 编辑:程序博客网 时间:2024/06/10 03:05

1869: Mathematics and Geometry

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 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

3
1
2
3

Sample Output

Case #1: 1
Case #2: 3
Case #3: 3

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;} 



0 0
原创粉丝点击