zzulioj1869

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章