程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 金色十月線上編程比賽第一題:小女孩數數

金色十月線上編程比賽第一題:小女孩數數

編輯:C++入門知識

金色十月線上編程比賽第一題:小女孩數數


金色十月線上編程比賽第一題:小女孩數數

題目詳情:

【金色十月線上編程比賽規則】

一個小女孩正在用左手手指數數,從1數到n。她從拇指算作1開始數起,然後,食指為2,中指為3,無名指為4,小指為5。接下來調轉方向,無名指算作6,中指為7,食指為8,大拇指為9,如此反復。問最後會停在那個手指上?用編號1、2、3、4、5依次表示大拇指、食指、中指、無名指、小指。

輸入格式:

輸入多組數據。每組數據占一行,只包含一個整數n(1<=n<=1000000000)。

輸出格式:

每組數據占一行,只包含一個介於1和5之間的整數,表示最後停留的手指。



答題說明:

輸入樣例:

1

10

1000000000

輸出樣例:

1

2

2


解題思路:我們可以先觀察下

1 2 3 4 5

9 8 7 6

10 11 12 13

17 16 15 14

18 19 20 21

25 24 23 22

。。。

我們發現第n行的最大值為5+4*(n-1),當n為偶數時,最大值在最右邊,n為奇數時,最大值在最左邊,於是我們只需要找到給定的數a在第幾行,然後從這個最大值一直減小到a,看看它在那個位置;

#include 
using namespace std;
int main(){
    long long n;
    while (cin>>n){
        double k=(n-5)*1.0/4+1;
        double s=k-(int)k;
        long long num=k;
        if (s)
            num++;
        long long a=5+4*(num-1);
        int answer=0;
        if (a>n)
            answer=a-n;
        else
            answer=n-a;
        if (num%2==0)
            answer+=1;
        else
            answer=5-answer;
        cout<

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