摘要:
水题~。 当出现给定字符串已经是回文串时,不需要对其进行操作,输出原数与0。 const int N=1010; string s; int k; bool check(string s) { for(int i=0;i<s.size()/2;i++) if(s[i] != s[s.size()-1 阅读全文
摘要:
高精除低精板子题。 const int N=1010; struct bignum { int m[N]; int len; bignum() { memset(m,0,sizeof m); len=0; } }; int r; bignum Div(bignum a,int b) { bignum 阅读全文
摘要:
水题~。 unordered_map<string,string> mp; unordered_set<string> S; int n,m; bool isprime(int n) { for(int i=2;i*i<=n;i++) if(n % i == 0) return false; ret 阅读全文
摘要:
题意 给出一个正整数N,求一段连续的整数,使得N能被这段连续整数的乘积整除。如果有多个方案,输出连续整数个数最多的方案;如果还有多种方案,输出其中第一个数最小的方案。 思路 首先需要注意到的一点是,N不会被除自己以外的大于$\sqrt$的整数整除,因此只需要从2 ~ N遍历连续整数的第一个,求此时N 阅读全文
摘要:
简单模拟~。 int a[35]; int score[35]; int n; int main() { int sum=0; while(cin>>a[n],a[n]) { if(a[n] == 1) score[n]=1; else if(n==0 || a[n-1] == 1) score[n 阅读全文
摘要:
题意 给出散列表长TSize和欲插入的元素,将这些元素按读入的顺序插入散列表中,其中散列函数为H(key) = key % TSize,解决冲突采用只往正向增加的二次探查法(即二次方探查法)。 另外,如果题目给出的TSize不是素数,那么需要将TSize重新赋值为第一个比TSize大的素数再进行元素 阅读全文
摘要:
水~。 const int N=1e5+10; int primes[N],cnt; bool vis[N]; int n; void init(int n) { for(int i=2;i<=n;i++) if(!vis[i]) { primes[cnt++]=i; for(int j=i;j<= 阅读全文
摘要:
题意 给出n个分数,求分数的和。分数前面可能有负号。若答案为假分数,则要按照带分数的形式输出;整数则按整数输出;否则按真分数输出。 注意点 注意最后输出时,需要按整数、带分数、真分数的情况分类处理。 注意最终结果为0的处理。 必须在每一步加法后都进行约分,如果等全部加完后才约分,则会溢出。 计算最大 阅读全文
摘要:
模拟题~。 题意 N个人排成K排来照相,规则如下: (1) 除了最后一排(个子最高的那排)外,其余所有排的人数均为N/K (向下取整)。, (2) 后排所有人的身高都大于前排所有人的身高。 (3) 对每一排来说,最高的人站在中间;在此基础上,该排的其他人按照左右交替的方式排在中间的人的两侧,例如中间 阅读全文
摘要:
状态表示: \(f[len][cnt]\):当前为len位,已经统计的$0$的个数为cnt,不计前导$0$。 注意点: 由于前导$0$标识符lead的存在,如果左边界为$0$需要作加一处理。 LL f[15][15]; int a[15]; LL dfs(int len,int cnt,bool l 阅读全文
摘要:
本题求一个数包含49的个数,典型数位DP问题。 状态表示:\(f[len][state]\):当前为第len位,当前已统计的数字的状态为state。 其中,state有$0,1,2$三种值: state == 1,表示上一位为4 state == 2,表示高位已存在49 state == 0,其他情 阅读全文
摘要:
数位DP模板题。 状态表示: \(f[len][cnt]\):表示当前为len位,且当前已统计的$1$的个数为cnt个。 注意点: 一开始把$f$数组表示成一维了,实际上搜索时每层的状态是个三维向量$(len,cnt,limit)$,limit可以不记录在数组中,但len和cnt是一定要记录在数组当 阅读全文