[一天至少一题直到ICPC开赛026]解题:An Easy Problem!(1/9)

An Easy Problem!

题目连结

根本不简单,一大堆陷阱而且测值还没跟你说

解题

0~9 A~Z a~z 做成表格,去查表找位置(这样可以避免遇到一些奇怪的测值像是+与空格)

base 就是从哪里开始往上去找N

再找字元时,用到最大的就是从他开始(如果遇到A,就是从时开始,因为0~9进位弄不出A==>溢位)
N 进位数字即 ${a_0}*n^{n-1}+{a_1}*n^{n-2}.....{a_{n-1}}*n^{1}+a_n$
是可以被$a_n*a_{n-1}*.....*a_{0}$ 整除

换句话说把其拆分相加==>再去被除==>也同样是N base 的答案

注意:测值会有一行字(有可能会跟要得不同)EX: +13A5如果base 超过 62 就要输出such number is impossible!

code

#include <iostream>#include <vector>#include <cmath>#include <algorithm>using namespace std;const string board = {"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"};int main(int argc, char const *argv[]){    string s;    while (getline(cin, s))    {        bool flag = 0;        int ans;        int base = 1, sum = 0;        for (int i = 0; i < s.length(); i++)        {            auto it = find(board.begin(), board.end(), s[i]);            if (it != board.end())            {                int side = distance(board.begin(), it);                // cout << side << endl;                if (base < side)                    base = side;                sum = side + sum;                // cout << "base:" << base << endl;            }        }        // cout << sum << endl;        for (int i = base; i <= 62; i++)        {            if (sum % i == 0)            {                cout << i + 1 << endl;                break;            }            if (i == 62)            {                cout << "such number is impossible!" << endl;                break;            }        }    }    return 0;}

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章