首页 > 代码库 > HDU4278 Faulty Odometer(进制转化问题)
HDU4278 Faulty Odometer(进制转化问题)
题目大意:里程表会错过0 1 2 3 4 5 6 7 8 9中的 3 和 8 两个数字 也就是 正常的里程表显示0 1 2 3 4 5 6 7 8 9
坏掉的里程表只会显示 0 1 2 4 5 6 7 9
其实可以看做:0 1 2 3 4 5 6 7 即坏掉的里程表显示的是8进制的数字,只需先将显示的数字换成8进制数,在把8进制数字换位10进制数字就是答案。
#include <iostream>#include <map>#include <sstream>#include <cstring>#include <cstdio>#include <cmath>#include <string>using namespace std;map<char ,char> mp;string str;long long ans;long long trans(long long a){ int y,b=0,i=0; while(a>=1){ y=a%10; b+=y*pow(8.0,i); i++; a=a/10; } return b;}long long fuck(){ string tps; int len=str.length(); long long tmp,tp; for(int i=0;i<len;i++){ tps.push_back(mp[str[i]]); } stringstream ss(tps); ss>>tmp; tp=trans(tmp); return tp;}int main(){ mp['0']='0'; mp['1']='1'; mp['2']='2'; mp['4']='3'; mp['5']='4'; mp['6']='5'; mp['7']='6'; mp['9']='7'; while(cin>>str){ if(str=="0") return 0; cout<<str<<": "; ans=fuck(); cout<<ans<<endl; }}
HDU4278 Faulty Odometer(进制转化问题)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。