HDU 2106 decimal system (进制转化求和)

题意:给你n个r进制数,让你求和。

析:思路就是先转化成十进制,再加和。

代码如下:

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <cstring>
#include <map>

using namespace std;
const int maxn = 70;
char s[maxn];

int main(){
    int n;
    while(~scanf("%d", &n)){
        int sum = 0;
        while(n--){
            int ss = 0;
            scanf("%s", s);
            int tt;
            for(tt = 0; s[tt] != ‘(‘; ++tt) ;

            int t = 0;
            for(int i = tt+1; s[i] != ‘)‘; ++i)
                t = t * 10 + s[i] - ‘0‘;

            for(int i = 0; s[i] != ‘(‘; ++i)
                ss = ss * t + s[i] - ‘0‘;
            sum += ss;
        }

        printf("%d\n", sum);
    }
    return 0;
}
时间: 2024-08-03 02:55:43

HDU 2106 decimal system (进制转化求和)的相关文章

hdu 2106 decimal system

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2106 decimal system Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3641    Accepted Submission(s): 2068 Problem Description As we know , we always

python数据结构:进制转化探索

*********************************第一部分******************************************************************* *********************************************************************************************************************** # 输入excel的行号,输出对应列的序号(从0开

hdu 4937 Lucky Number ( 进制转换+枚举 )

题意: 有一个数n,问有多少个进制x(基数)使得n转换为x进制后的数字中只有3.4.5.6四个数. 算法: 对于只有一位数的情况,显然3.4.5.6都应该输出-1. 如果有2位数,假设这2位中高位为a,低位为b,进制为base,则 n = a * base + b,解一元一次方程即可. 如果有3位数,假设这3为从高到低分别为a.b.c,进制为base,则 n = a * base * base + b * base + c,即一元二次方程即可. 如果位数>= 4,可以暴力枚举进制数.base>

对两个N进制字符串求和

// nSystemStrSum.cpp : 定义控制台应用程序的入口点. // /* N 进制的 两个字符串求和 字符串由0-9 a-z 组成 思路: 若输入不合法,输出提示退出,否则按如下步骤进行 1把两个字符串转成等成长,在短的那个串前加‘0’ 2将串中的每一个字符转成数值 3从后到前 每一位临时变量= 串一的位+串二对应的位 +进位 此位上的数值 = 每一位临时变量%进制 进位 = 每一位临时变量/进制 将数据转成字符 即systemValueStr[此位上的数值]; */ #inclu

c语言进制转化

#include <stdio.h> // 进制转化 int main(void) { int i1 = 12; int i2 = 88; int i3 = 0x32C; printf("八进制输出i1 = %o\n", i1); // 14 printf("十六进制输出i2 = %x\n", i2); // 58 printf("十六进制输出i3 = %x\n", i3); // 32c printf("十进制输出i3 =

Java Integer 进制转化的实现(附源码),对模与补码的理解

1.toBinaryString方法的实现 1 public static String toBinaryString(int i) { 2 return toUnsignedString0(i, 1); 3 } 4 private static String toUnsignedString0(int val, int shift) { 5 // assert shift > 0 && shift <=5 : "Illegal shift value";

栈的应用之进制转化

顺序栈的代码: 不再赘述:点击打开链接 //栈的应用-----进制转化 #include"stack.h" int main() { Stack st; InitStack(&st); int select; int num1; //要转化的数 int num2; //转化之后各个位的数 int flag = 1; //控制循环结束 while(flag) { cout<<"****************进制转换*****************&quo

计算机基础知识_进制转化

进制转化 一.任何一个进制转化为10进制的方式 156的十进制可以看做1*10^2 + 5*10^1  +   6*10^0 首先我们看一下156 ,平方,次方等等都是根据后面有多少位决定的,如果用计算机计算,则正好是156 33是一个八进制可以看做3*8^1+3*8^0 次方  换算出来就是10进制 如果你本身是x进制,那么你的数字就看做  num * x^位数  比如我有一个16进制的数字,转为10进制 16进制在计算机中表示方法: 1 2 3 4 5 6 7 8 9 a b c d e f

标识符,进制转化,原反补码等

标识符 Java对包.类.方法.参数.变量等要素命名时使用的字符序列. 规则:***** 1.由字母(含中.英.日.俄等).数字.下划线_和美元符号$组成. 2.不能以数字开头   int 123a=1; 3.区分大小写  int a=1和int A=1是不一样的. 4.长度无限制.(一般编程长度不超过15个字符) 5.不能是Java中的保留字和关键字    int class="1"    int ainta=1 保留字和关键字都有哪些?我们知道以后应该避开它们. 标识符命名习惯:*