题目意思:
有一个里程表坏了,这个里程表会直接从2跳到4,7跳到9。现在给定一个历程数值要求我们算出真正的数值。
解题思路:
1思路:8进制转10进制
2分析:如果是9,实际上是7.如果是4-7实际上是3-6。
代码:
#include <algorithm> #include <iostream> #include <cstdio> #include <cmath> using namespace std; int n , ans; void solve(){ int i , j ,tmp; tmp = n ; ans = 0; for(i = 0 ; n ; i++){ j = n % 10; if(j == 9) j = 7;/*如果是9,那么实际上是7*/ else if(j > 3) j--;/*如果4-7实际上是3-6*/ ans += pow(8,i)*j; n /= 10; } printf("%d: %d\n" ,tmp , ans); } int main(){ while(scanf("%d" ,&n) && n) solve(); }