51nod1116-取模&大数-K进制下的大数
来源:互联网 发布:怎么淘宝介入 编辑:程序博客网 时间:2024/05/20 12:48
https://www.51nod.com/onlineJudge/submitDetail.html#!judgeId=300218
开始是模拟计算,后来感觉这么长的位置可能会爆。
后来想了一个方法,每次先求位权。一位一位的算。
比如4872%21
先算 4*1000 mod21为 18
18+800 mod 21
依次。但是又wa了好多组。。。这样应该也会爆。
其实已经很像了。。。但是没有发现,就是手工模拟取模的过程,分位次取模。。额。
#include <iostream>#include <cstdio>#include <cstdlib>#include <map>using namespace std;typedef long long ll;map<char,int>mp;int main(){ string s; while(cin>>s){ int max1=-1; int max2=-1; bool flag=false; bool kk=false; for(int i=0;i<s.length();i++){ if(s[i]>='A'&&s[i]<='Z') {flag=true; max2=max(max2,s[i]-'A'); } else if(s[i]>='0'&&s[i]<='9') max1=max(max1,s[i]-'0'); } if(!flag){ for(int i=max1+1;i<=36;i++){ ll k=1; ll sum=0; for(int j=0;j<s.length();j++){ sum=sum*i+1ll*(s[j]-'0'); sum%=(i-1); } if(!sum) {printf("%d\n",i);kk=true;break;} } } else{ for(int i=max2+11;i<=36;i++){ ll k=1; ll sum=0; for(int j=0;j<s.length();j++){ if(s[j]>='0'&&s[j]<='9') sum =1ll*(s[j]-'0')+sum*i; else sum=1ll*(s[j]-'A'+10)+sum*i; sum%=(i-1); } //if(i==22) //cout<<sum<<"@@@@"<<endl; if(!sum) {printf("%d\n",i); //cout<<"!!"<<max2+11<<endl; //cout<<sum<<endl; //cout<<(i-1)<<endl; kk=true; break;} } } if(!kk) puts("No solution"); } return 0;}
阅读全文
0 0
- 51nod1116-取模&大数-K进制下的大数
- 51NOD1116 K进制下的大数
- 51Nod1116 K进制下的大数(思维)
- 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进制下的大数
- 51nod 1116 K进制下的大数
- K进制下的大数 51Nod
- 51Nod 1116 K进制下的大数
- 反射六
- 虚函数相关内容
- 破解可读不可复制的 U 盘
- Android高级组件
- webservice
- 51nod1116-取模&大数-K进制下的大数
- 使用Doxygen生成libevent document(2.0.15)--CHM格式
- 在Spring官网下载包记录
- 7.31更新(派生类与基类)
- linunx 下载文件到本地
- 动态代理
- Unity3d 控制物体transform移动的几种方法
- linux(centos)下安装PHP的PDO扩展
- 通过url方式传参jsp页面中文乱码