1. 程式人生 > 其它 >CCF CSP 201912-1 報數 100分

CCF CSP 201912-1 報數 100分

技術標籤:CSPcppcspccf

201912-1

問題描述
甲乙丙丁決定玩一個報數的遊戲來打發時間。遊戲規則為四個人從1開始輪流進行報數,但如果需要報出的數是7的倍數或含有數字7則直接跳過。
此外大家約定,在總共報出了n個數後(不計入被跳過的數)遊戲結東。現在需要你來幫忙統計,遊戲過程中每個人各自跳過了幾次。

輸入格式
從標準輸入讀入資料。
輸入僅一行,包含一個正整數n,表示報出了多少個數後遊戲結束。

輸出格式
輸出到標準輸出。
輸出共四行,每行一個整數,依次表示甲乙丙丁四人在遊戲過程中跳過的次數。

樣例輸入
20
樣例輸出
2
1
1
0

演算法思想
設定一個變數count計算將要報的數,判斷count是否已經報完,則是判斷count減去已經跳過的個數是否小於等於num,若否,將count加1;若是,則判斷是否有包含7的數或者是7的倍數,若是,則判斷是輪到甲乙丙丁哪個報的,再將此人的次數加1;再將相應的跳過的次數輸出。

資料結構設計
使用整型變數int;
int count=1,jia=0,yi=0,bing=0,ding=0;

演算法步驟
1.定義報的數字count=1,甲乙丙丁的跳數,jia=0,yi=0,bing=0,ding=0。
2.輸入需要報的數num
3.判斷已經將num個數報完,若是,跳轉4,若否,轉到8
4.將判斷此數是否是7的倍數或包含7的值賦值給seven
5. seven是否等於1,若是,則 轉6
6.判斷是輪到甲乙丙丁哪個人報的,輪到的人將跳數加1
7.將count加1
8.輸出甲乙丙丁跳過的個數。

實現技術
主要是判斷是否已經報完數,用count-甲乙丙丁已經跳的次數是否≥num

程式碼實現

#include
<iostream>
using namespace std; int main() { int count=1,jia=0,yi=0,bing=0,ding=0;//count計算當前報數報到哪了; int num,seven; cin>>num; while(count-(jia+yi+bing+ding)<=num) { seven=count%7==0 || count%10==7 || count/10%10==7 || count/100==7; if(seven==1) { if(count%4==1) jia++; else if
(count%4==2) yi++; else if (count%4==3) bing++; else if (count%4==0) ding++; } count++; } cout<<jia<<endl<<yi<<endl<<bing<<endl<<ding<<endl; return 0; }

測試結果
!](https://img-blog.csdnimg.cn/20210127174501659.png)

在這裡插入圖片描述