程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 長理ACM 13-圍圈報數(谌海軍),acm13-

長理ACM 13-圍圈報數(谌海軍),acm13-

編輯:關於C語言

長理ACM 13-圍圈報數(谌海軍),acm13-


 1 /*
 2 //題目標題:
 3 *圍圈報數(谌海軍)
 4 
 5 //題目描述:
 6 *有n(n<=100)圍成一圈,順序排號(從1排到n)。從第一個人開始報數(從1報到m(m<=9)),凡報到m的人退出圈子,問最後留下的是原來第幾號的那位?
 7 
 8 //輸入描述:
 9 *輸入為兩個正整數,第一個<=100,第二個<=9;
10 
11 //輸出描述:
12 *輸出為一個正整數;
13 
14 //樣式輸入:
15 100 3
16 
17 //樣式輸出:
18 91
19 
20 //解題思路:
21 1、定義一個長度為100數組a,初始化為0;
22 2、接收鍵盤輸入值n,m,數組a的前n-1個元素賦值為1~n;
23 3、建立兩層嵌套循環,外循環至退出人數為n-1為止,內循環中從0循環至n,將a數組中非0的數據逢m置零,同時記錄退出人數;
24 4、循環全部結束後輸出最後留下的一個a數組的非零元素的值。
25 */
26 
27 #include <stdio.h>
28 
29 int main()
30 {
31     int i, n, m,  k=0, cnt = 0, a[100] = {0};
32     scanf("%d%d,", &n, &m);
33     for(i = 0; i < n; ++i)
34         {a[i] = i+1;}
35     while(cnt < n)
36     {
37         for(i = 0; i < n; ++i)
38             if(a[i]!=0)
39             {
40                 k++;
41                 if(k==m) {a[i]=0; k=0; cnt++;}
42             }
43         if(cnt==n-1) break;
44         else i=0;
45     }
46     for(i = n-1; i >= 0; --i)
47         if(a[i] != 0) printf("%d", a[i]);
48     return 0;
49 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved