题意:
t组输入,给出一个n代表下面给出n板材,问用这些板材最大能割除多大的正方形。
题解:
先对输入进来的序列进行排序,由大到小枚举,用lower_bound去找,若大于i的板材数量大于等于i则说明找到答案了,输出即可,否则继续找,找到为止。
代码:
https://codeforces.com/contest/1243/submission/70163147
题意:
t组输入,给出一个n代表下面给出两个长为n的字符串s和t,问能否只交换一次s[i]和t[i]使两个字符串相等。
题解:
找出不同之处有几个,由于题目中保证给出的字符串必不相等,所以只要找到不同之处不为两处都是No,然后判断是否不同之处pos1和pos2是否满足s[pos1]==s[pos2]&&t[pos1]==t[pos2],只有满足这个才输出Yes,否则输出No。
代码:
https://codeforces.com/contest/1243/submission/70163167
题意:
给出一个n代表要铺一段长为n的路,若路的第i块砖和第j块砖符合|i−j|>1且n%|i−j|=0则两者颜色相同,否则颜色不同,问有至少有多少种颜色。
题解:
这道题纯靠找规律(事实上是可以证出来的),把1到12的都写出来,能看出质数的如2,3,5,7,11的答案都是它本身,像9这样只有一个因数的答案就为那个因数,12答案为一,像12有2,3,4,6都可以整除12的可以发现4和6在这里根本没起到作用,为什么,因为4对于2来说是多余的,6对于2和3是多余的,说明这里要用的是唯一分解定理,找出组成n个所有质数即可,若质数数量为零说明为质数,输出它本身,若质数数量为一,输出该质数,若质数数量大于等于二,输出一。
证明:质数不用多说,只有一个质数也不用说,唯一可以说的是质数数量大于等于两个的,为什么其答案为一呢,因为k1*a+k2*b=gcd(a,b),而a和b为质数,所以gcd(a,b)为一,所以k1*a+k2*b=1(k1和k2为整数),由于上式所以a和b的周围两个数如a-1和a+1,b-1和b+1的颜色是相同的,再由此推出所有的颜色都是相同的,所以答案为一。
代码:
https://codeforces.com/contest/1243/submission/70152711
反思:在做这道题的时候,我的唯一分解定理写错了,导致超时,没能写出来,感兴趣的可以看下正确的唯一分解定理写法https://www.jianshu.com/writer#/notebooks/42202619/notes/59261278。