1. 程式人生 > 實用技巧 >1856弗洛格

1856弗洛格

描述

青蛙弗洛格和它的媽媽是火星動物,在火星上,每年都有12個月,每個月的天數都是30天,每個月都是從1號開始,然後是2號,...,每月的最後一天都是30號。

弗洛格媽媽想考查一下弗洛格的數學水平,於是問道: “今天是幾號?” ,弗洛格回答: “27號!” , 媽媽說:“正確! ” 。媽媽接著問: “前1天是幾號?” ,弗洛格回答: “26號!太簡單了!我 讀一年級就會了! ” 。媽媽再問: “前N天是幾號?” ,弗洛格皺起眉頭: “這個有點難,我 要寫個程式來算” 。由於弗洛格的程式設計水平一般,你能幫幫它嗎?

輸入

一個整數 N,表示媽媽問弗洛格,前 N 天是幾號?

輸出

一個整數。

輸入樣例 1

2

輸出樣例 1

25

輸入樣例 2

21

輸出樣例 2

6


這一題我們可以用一個月的天數減去(27-n)的差的絕對值求出輸入天數大於26時的方法
小於26天時,直接輸出26-n
程式碼:
 1 #include<iostream>
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 int main()
 5 { 
 6     int n;
 7     cin>>n;
 8     if(n<=26) cout<<27-n;
 9     if(n>=27) cout<<30
-abs(27-n); 10 return 0; 11 }

我用這個程式碼提交之後十個資料點,只對了六個。這就說明程式有漏洞。

還有一個點必須要考慮進來,這一題輸入的天數有可能大於60或以上,這個時候就需要修改一下程式碼。

程式碼:

 1 #include<iostream>
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 int main()
 5 { 
 6     int n;
 7     cin>>n;
 8     if(n<=26) cout<<27-n;
 9
if(n>=27) cout<<30-abs(27-n)%30; 10 return 0; 11 }

完工