標籤:style os io for re 代碼
這裡開一個二維數組,num[105][2]; 我也不知道N有多少,隨便開的, 那麼這裡num[i][0] 表示當前 第 i 個人擁有的糖果數,num[i][1]表示他上面一個人分給他的糖果數,具體實現見代碼注釋
這裡要注意的就是:先給糖果,然後如果有人糖果數為奇數,就加1 ,然後再判斷是不是相等
上馬:
#include <iostream>#include <cstring>using namespace std;int num[105][2];int N;bool end()//判斷是否end過程中,處理分糖果{ bool flag = true;//是否end for(int i = 0; i < N; i ++) { num[i][0] = num[i][0] + num[i][1]; //先處理 if(num[i][0] % 2 != 0) num[i][0] ++;//奇數就加1 } for(int i = 0; i < N-1; i ++) { if(num[i][0] != num[i+1][0]) flag = false;//兩兩中相等就都相等 } return flag;}int main(){ while(cin >> N && N) { memset(num,0,sizeof(num)); for(int i = 0; i < N; i ++) cin >> num[i][0]; int time = 0;//次數 while(1) { if(end()) break; time ++; for(int i = 0; i < N; i ++)//迴圈處理 { int right = (i+1)%N; //這裡表示下一個人 num[right][1] = num[i][0] / 2; num[i][0] = num[i][0]/2; } } cout << time << ' ' << num[0][0]<<endl; } return 0;}