编程题1:
求一个n(1<n<=36)进制正整数除以m(1<m<=36)的余数。
输入两行,第一行为n,m;第二行包含一个整数,由连续进制字符组成,若发现非法字符(比如空格;在10进制下,‘a’-'z’也属于非法字符),表示整数结束。
#include <iostream>
#include<vector>
#include<string>
using namespace std;
class Solution {
public:
//若先对字符串求和再求余,可能导致内存溢出。根据数学知识:(x1+x2+x3)%m=x1%m+x2%m+x3%m,故可对每一位上的元素利用快速幂思想分别求幂,然后相加
//本题注意点及陷阱:若发现非法字符(比如空格;在10进制下,'a'-'z'也属于非法字符),表示整数结束
int res = 0;
int check(int n,string ss,int m) {
if (ss.size() == 0) return 0;
//1、先找到合法字符 O(n)
int size=0;
if (ss.find