- 博客(11)
- 收藏
- 关注
原创 Palindrome Numbers(UVALive 2889)
长度为2*i+1和2*(i+1)的数的个数都为9*10^i,由此可知N的长度和N为该长度的第几个数。
2016-07-19 01:56:54
444
原创 Crazy tea party(UVALive 2756)
把N分成差最小的两个部分,即偶数分为N/2和N/2,奇数分为N/2和N/2+1,然后每个部分内部用相邻两个数交换的方法计算所需要的步骤。
2016-07-19 01:46:11
507
原创 Minimum Sum LCM(UVA 10791)
将N分解成质因数的幂的乘积,答案就是这些幂的和,注意: 当质因数个数不足两个时用1补充; 极限数据会爆出int,要用long long。
2016-07-19 01:29:08
327
原创 Integer Game(UVA 11489)
由于每一次操作后余下的每个数位上的数的和为3的倍数,所以第一次取走的数和所有数位上的数的和对模3同余,并且此后每次取走的数都是3的倍数,可据此计算出总共操作的次数。
2016-07-19 01:19:12
314
原创 Square Numbers(Square Numbers)
正解是预处理每个数有多少个小于等于自己的平方数记为num【i】,ans(a,b)=num【b】-num【a-1】。 我的解法是用函数暴力求n以内有多少个平方数,然后带入ans(a,b)=num【b】-num【a-1】计算。
2016-07-19 01:13:43
785
原创 Add Again(UVA 11076)
定义num【i】为N个数中i出现的次数,这N个数形成的不同排列共有N!/(∏(i:0->9)(num【i】!)),由于一个数出现在每个位置的次数是一样的,所以答案为各个位上数字之和乘上排列数除以N乘上1+10+。。。+10^(N-1)。
2016-07-19 00:56:48
446
原创 LCM Cardinality(UVA 10892)
对于N的一个质因数i,设N中包含的i的最高次幂的指数为k,则i的两个幂的gcd为i^k的情况共有【i^k,i^0】到【i^k,i^(k-1)】k种+【i^0,i^k】到【i^(k-1),i^k】k种+【i^k,i^k】=2*k+1种,将所有质因数的情况乘起来,其中只有每个质因数都取【i^k,i^k】的情况没有重复,剩下的都出现了两次,于是最终答案为(ans+1)/2。
2016-07-19 00:44:21
335
原创 Again Prime? No Time.(UVA 10780)
预处理答案ans为+∞,定义函数ok(x,y)表示y!中含有的x的最高次幂的指数,定义函数go(y,x)表示y中含有的x的最高次幂的指数,将m分解质因数,对于每一个质因数i,当前答案now=ok(i,n)/go(m,i),假如now更小则更新ans。 求y!中x的最高次幂的方法为求出并加上1到y中能被x整除的数的个数即y/x,然后将每个数除以x,不能整除的数删去,剩下的数就变成了1到y/x,重复该操作直到y==0。
2016-07-18 23:49:04
427
原创 How do you add?(UVA 10943)
这题正解其实是用隔板法,ans(n,k)=C(n+k-1,k-1),因为这题n比较小,所以可以直接用C(n,m)=C(n-1,m-1)+C(n-1,M)打出杨辉三角,时空复杂度都是O(n²)。 然后我用的方法是DP,ans(n,k)=∑(i:0->n)ans(i,k-1),复杂度O(n³)。
2016-07-18 23:27:57
415
原创 Benefit(UVA 11889)
这题的正解其实是令B=C/A,然后不断地通过G=gcd(A,B),A/=G,B*=G;这样的操作,在保证A*B=C的情况下将A和B的公因数从A转移至B,直到A和B互质。 然而我用的是一种性能更差的算法,我将A和C分别质因数分解,对于某个质因数,如果他在A中的幂小于C中的幂,则B中该质因数的幂等于C中该质因数的幂,否则B中该质因数的幂等于1。
2016-07-18 23:05:29
552
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人