首页 > 代码库 > 我的ACM——hdu 2016
我的ACM——hdu 2016
decimal system |
Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) |
Total Submission(s): 3243 Accepted Submission(s): 1242 |
Problem Description As we know , we always use the decimal system in our common life, even using the computer. If we want to calculate the value that 3 plus 9, we just import 3 and 9.after calculation of computer, we will get the result of 12. But after learning <<The Principle Of Computer>>,we know that the computer will do the calculation as the following steps: 1 computer change the 3 into binary formality like 11; 2 computer change the 9 into binary formality like 1001; 3 computer plus the two number and get the result 1100; 4 computer change the result into decimal formality like 12; 5 computer export the result; In the computer system there are other formalities to deal with the number such as hexadecimal. Now I will give several number with a kind of change method, for example, if I give you 1011(2), it means 1011 is a number in the binary system, and 123(10) means 123 if a number in the decimal system. Now I will give you some numbers with any kind of system, you guys should tell me the sum of the number in the decimal system. |
Input There will be several cases. The first line of each case contains one integers N, and N means there will be N numbers to import, then there will be N numbers at the next N lines, each line contains a number with such form : X1….Xn.(Y), and 0<=Xi<Y, 1<Y<=10. I promise you that the sum will not exceed the 100000000, and there will be at most 100 cases and the 0<N<=1000. |
Output There is only one line output case for each input case, which is the sum of all the number. The sum must be expressed using the decimal system. |
Sample Input 31(2)2(3)3(4)411(10)11(2)11(3)11(4) |
Sample Output 623 |
这是个任意进制转换为十进制问题
难点输入int char int char的话就用%d%c%d%c
还有在输入时字符一定要用英文输入,不然结果会出错!!血的教训啊!!!!PS我鼓弄了一早上才发现
#include<stdio.h> #include<math.h> int fact(int n,int po) //任意进制转化为十进制 { int exsum=0,temp,cnt=0; while(n) { temp=n%10; exsum +=temp*pow(po,cnt); cnt++; n /=10; } return exsum; } int main() { int num,exnum,pos,sum=0,i; char r,l; while(scanf("%d",&num)!=EOF) { for( i=0;i<num;i++) { scanf("%d%c%d%c",&exnum,&l,&pos,&r); //输入intcharintchar sum +=fact(exnum,pos); //计算num个数的和 } printf("%d\n",sum); sum=0; //***和清零 } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。