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



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