zoukankan      html  css  js  c++  java
  • [数论][模拟]51nod 1116 K进制下的大数

    1116 K进制下的大数

    有一个字符串S,记录了一个大数,但不知这个大数是多少进制的,只知道这个数在K进制下是K - 1的倍数。现在由你来求出这个最小的进制K。

    例如:给出的数是A1A,有A则最少也是11进制,然后发现A1A在22进制下等于4872,4872 mod 21 = 0,并且22是最小的,因此输出k = 22(大数的表示中A对应10,Z对应35)。

     收起

    输入

    输入大数对应的字符串S。S的长度小于10^5。
    

    输出

    输出对应的进制K,如果在2 - 36范围内没有找到对应的解,则输出No Solution。

    输入样例

    A1A

    输出样例

    22

    解法:

    枚举进制, 大数取模 / 9余数定理

     代码:

    /*
        Zeolim - An AC a day keeps the bug away
    */
    
    //#pragma GCC optimize(2)
    #include <cstdio>
    #include <iostream>
    #include <cstdlib>
    #include <cmath>
    #include <cctype>
    #include <string>
    #include <cstring>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <set>
    #include <sstream>
    #include <map>
    #include <ctime>
    #include <vector>
    #include <fstream>
    #include <list>
    #include <iomanip>
    #include <numeric>
    using namespace std;
    typedef long long ll;
    
    const int MAXN = 1e6 + 10;
    
    int arr[MAXN] = {0};
    
    char s[MAXN] = " ";
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);     cout.tie(0);
        //freopen("D://test.in", "r", stdin);
        //freopen("D://test.out", "w", stdout);
    
        cin>>s;
    
        int ma = 0;
    
        int len = strlen(s);
    
        ll sum = 0;
    
        for(int i = 0; i < len; i++)
        {
            if(s[i] <= '9')
                arr[i] = (s[i] - '0');
            else
                arr[i] = ((s[i] - 'A') + 10);
    
            ma = max(ma, arr[i] + 1);
        }
    
        for(int i = max(2, ma); i <= 36; i++)
        {
    
            ll rs = 0;
    
            for(int j = 0; j < len; j++)
            {
                rs = (((rs * i) + arr[j]) % (i - 1));
            }
    
            if(rs == 0)
            {
                cout<<i<<'
    ';
                return 0;
            }
        }
        
        cout<<"No Solution"<<'
    ';
    
        
        return 0;
    }
  • 相关阅读:
    mysqlsla 分析mysql慢查询日志
    MyBatis-DynamicSQL 动态SQL
    MyBatis-resultType 与 resultMap 中的几种返回类型
    MyBatis-${}与#{}
    MyBatis-parameterType 入参封装 Map 流程
    MyBatis-parameterType 取出入参值
    MyBatis-CURD
    第二十四篇-用VideoView制作一个简单的视频播放器
    第二十三篇-ubuntu18.04怎么下载播放器以及如何设置默认播放器
    第二十二篇-Guideline基准线
  • 原文地址:https://www.cnblogs.com/zeolim/p/12270391.html
Copyright © 2011-2022 走看看