从n*n的一个正方形左下角开始沿着边顺时针走,每走n+1个单位画一个叉叉。当走到已经画叉的位置停止,问此时共画了多少个叉。、
首先停止时走的总距离一定是4n的倍数,因为可以看做是从停止处出发又回到停止的位置,设走了p圈停止,则总距离为p*4*n,又设画了k个叉叉,则总距离又可表示为(k-1)*(n+1)。即有p*4*n=(k-1)*(n+1)。故只需求4*n与n+1的最小公倍数lcm(4n,n+1),结果即为lcm(4n,n+1)/(n+1)+1
#include<bits/stdc++.h>
using namespace std;
#define LL __int64
LL gcd(LL a,LL b)
{
return b?gcd(b,a%b):a;
}
LL lcm(LL a,LL b)
{
return a*b/gcd(a,b);
}
int main()
{
LL n;
int t;
cin>>t;
while(t--)
{
scanf("%I64d",&n);
printf("%I64d\n",lcm(4*n,n+1)/(n+1)+1);
}
return 0;
}