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