计算出租车的实际里程
计算出租车的实际里程
【计算出租车的实际里程】出租车司机自行修改了里程表,导致每次遇到4,就会跳过,比如4-->5、39-->40、400-->500
输入描述:
里程表的显示里程
输出描述:
里程表的实际里程
示例1
输入
5
输出
4
解释:因为实际里程到4之后,会跳过直接到5,所以里程表显示5的时候,实际里程应该为4
示例2
输入:15
输出:
13
解释:实际里程到4之后,会跳过直接到5,多了1,到14之后直接跳到了15,又多了1,所以 13 = 15 - 1 - 1
C++
/* 出租车司机自行修改了里程表,导致每次遇到4,就会跳过,比如4-->5、39-->40、400-->500 输入描述:里程表的显示里程 输出描述:里程表的实际里程 例1: 输入: 5 输出: 4 解释:因为实际里程到4之后,会跳过直接到5,所以里程表显示5的时候,实际里程应该为4 例2: 输入: 15 输出: 13 解释:实际里程到4之后,会跳过直接到5,多了1,到14之后直接跳到了15,又多了1,所以 13 = 15 - 1 - 1 */ #include<bits/stdc++.h> using namespace std; void cal(int &sum); int main() { int n; cin >> n; //加入n最大99999;区别个十百千万五位数字。 int origin = 0; int sum = 0; for (int i = 0; i < n;i++) { origin++; sum++; cal(sum); if(sum == n) { break; } } cout << origin << endl; system("pause"); return 0; } void cal(int &sum) { int ge = sum % 10; int shi = (sum / 10) % 10; int bai = (sum / 100) % 10; int qian = (sum / 1000) % 10; int wan = sum / 10000; if(ge == 4) { sum = sum + 1; } if(shi == 4) { sum = sum + 10; } if(bai == 4) { sum = sum + 100; } if(qian == 4) { sum = sum + 1000; } if(wan == 4) { sum = sum + 10000; } }