小珂是一個愛美的女孩,她有n條新項鏈,標號從1到n,每一條項鏈在顏色上都會有一些差別,n條項鏈依次擺放,圍成一個圈。小珂每次都會從上一次選擇項鏈的位置開始數到第k條項鏈,把這條項鏈作為今天要帶的項鏈,每次數的方向都是一致的,現在希望你幫小珂計算出一個最大的k,滿足k<=n/2的同時,使得小珂在接下來的n天中將所有的項鏈都剛好帶了一遍。
例如 n=7,取k=3
天數 項鏈編號
1 1
2 4
3 7
4 3
5 6
6 2
7 5
輸入第一行有一個整數 0<m<10000 表示有m組測試數據,接下來的m行每行有一個整數,表示小珂的項鏈個數2<=m<2^31輸出輸出m個k的值樣例輸入227樣例輸出13分析:打表出來前12個數據。
n k
3 14 15 26 17 38 39 410 311 512 5
可以發現結果和輸入互質AC代碼如下:#include<cstdio>int n;int gcd(int a){ //輾轉相除找最大公約數 int temp=n; while(a){ int r=temp%a; temp=a; a=r; } return temp;}int main(){ int m; scanf("%d",&m); while(m--){ scanf("%d",&n); for(int k=n/2;k>0;k--){ if(gcd(k)==1){ PRintf("%d/n",k); break; } } } return 0;}
新聞熱點
疑難解答