標籤:style blog color os io for ar div
解析9進位,11進位的字串為10進位的數字輸出,輸入的字串有效位(0v0012345678)長度不超過8位,前面的00不算做有效位。解析後以10進位的數字輸出。
如果解析到非法字串則返回-1
9進位:
9進位的數的範圍:0,1,2,3,4,5,6,7,8
9進位的開始為:0V或者0v
9進位的正確執行個體:0V11 0v564 0V123 0v0784 0V0 0v 0V
9進位的錯誤執行個體:0V923 0vt12 00V21 0123
9進位轉換為10進位:0V11 -> 10
0v564 -> 463
11進位:
11進位的數的範圍:0,1,2,3,4,5,6,7,8,9,A(a)
11進位的開始為:0W或者0w
11進位的正確執行個體:0W11 0w564 0W123 0w0A8a 0W 0w
11進位的錯誤執行個體:0WB923 0wVaA 00W21 0WAx123
11進位轉換為10進位:
0W11 -> 12
0w564 -> 675
#include <math.h>#include<iostream>#include <string>using namespace std;void main(){ string str; cin>>str; int len=str.length(); char *ch=new char[len]; for (int i=0;i<len;i++) { ch[i]=str[i]; } int iRet=0; if (ch[0]==‘0‘&&(ch[1]==‘v‘||ch[1]==‘V‘)) { for (int i=len-1;i>1;i--) { if (ch[i]>‘8‘||ch[i]<‘0‘) { cout<<-1; return; } iRet+=(ch[i]-‘0‘)*((int)pow(9.0,len-1-i)); } } else if (ch[0]==‘0‘&&(ch[1]==‘w‘||ch[1]==‘W‘)) { for (int i=len-1;i>1;i--) { if (ch[i]!=‘a‘&&ch[i]!=‘A‘&&(ch[i]>‘9‘||ch[i]<‘0‘)) { cout<<-1; return; } if (ch[i]==‘a‘||ch[i]==‘A‘) { ch[i]=‘0‘+10; } iRet+=(ch[i]-‘0‘)*((int)pow(11.0,len-1-i)); } } else { cout<<-1; return; } cout<<iRet; }