51Nod 1116 K进制下的大数
来源:互联网 发布:网络信号大师 编辑:程序博客网 时间:2024/06/05 07:48
有一个字符串S,记录了一个大数,但不知这个大数是多少进制的,只知道这个数在K进制下是K - 1的倍数。现在由你来求出这个最小的进制K。
例如:给出的数是A1A,有A则最少也是11进制,然后发现A1A在22进制下等于4872,4872 mod 21 = 0,并且22是最小的,因此输出k = 22(大数的表示中A对应10,Z对应35)。
A1A
22
AC代码:
#include<iostream>#include<algorithm>#include<cstring>#include<cmath>using namespace std;char ch[100005];int exchange(char a){ if(a == '0') return 0; else if(a == '1') return 1; else if(a == '2') return 2; else if(a == '3') return 3; else if(a == '4') return 4; else if(a == '5') return 5; else if(a == '6') return 6; else if(a == '7') return 7; else if(a == '8') return 8; else if(a == '9') return 9; else { return (a - 'A' + 10); }}int pow_(int a, int b){ int c = 1; for(int i = 1; i <= b; i++) c *= a; return c;}int main(){ while(cin>>ch) { int k, sign = 2; long long number = 0; for(int i = 0; i < strlen(ch); i++) { sign = max(sign, exchange(ch[i])); } if(sign == 0 || sign == 1) cout<<"No Solution"<<endl; int i; for(i = sign + 1; i <= 36; i++) { number = 0; for(int j = 0; j < strlen(ch); j++) { number += exchange(ch[j]); } if(number % (i - 1) == 0) { cout<<i<<endl; break; } } if(i > 36) cout<<"No Solution"<<endl; } return 0;}
阅读全文
0 0
- 51NOD 1116 K进制下的大数
- 51nod 1116 K进制下的大数
- 51Nod 1116 K进制下的大数
- 51nod 1116 K进制下的大数
- 51nod 1116 K进制下的大数
- 51nod 1116 K进制下的大数
- 51Nod 1116 K进制下的大数
- 51nod 1116 K进制下的大数
- 51nod 1116 K进制下的大数
- 51nod 1116 K进制下的大数
- 51nod 1116 K进制下的大数
- 51Nod 1116 K进制下的大数
- K进制下的大数 51Nod
- 51nod 1116 K进制下的大数 (暴力枚举)
- 51Nod-1116-K进制下的大数
- 51nod 1116 K进制下的大数 暴力/数论
- 51Nod 1116 K进制下的大数【数学】
- 51nod 1116 K进制下的大数 利用同余式的乘法传递性质
- PAT1013数素数~~~
- 高级特性
- 第八天
- 事件分发机制
- 今天是2017、07、11的第一篇博客
- 51Nod 1116 K进制下的大数
- maven 项目 Java Resources 文件报错解决
- 【二叉树】判断二叉树是否对称
- [数论] Codeforces 819D R #421 D.Mister B and Astronomers & 516E R #292 E. Drazil and His Happy Friends
- ubuntu 14.04 识别展讯手机
- 生产者和消费者三种实现
- Visual Studio 2015
- CSS块元素居中
- python之集合