![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Maths - Number Theory
文章平均质量分 53
miss_minor
坚持,请你坚持
展开
-
10110 - Light, more light
题目:10110 - Light, more light题目大意:问一条路上有n盏灯,总共走n次,第i趟,把能被i整除的灯切换一下状态(开变成关,关变成开),最开始是关着的。求最后一盏灯是开还是关。解题思路:看这个数是否为平方数,是的话就说明他的一个因数开了没有另一个对应的因数在将这盏灯关上,所以最后这盏灯就是开着的,否则就是关着的。如果一个个的去找会超时。(减小为一半都会原创 2014-01-21 12:42:08 · 643 阅读 · 0 评论 -
408 - Uniform Generator
题目:408 - Uniform Generator题目大意:就是给你一个增量a和模数b,问你这个数能根据上面给的公式产生0 ~b-1的数吗?解题思路:就是问给出的a 和 b 除1以外还有公因子吗?有的话不能产生上述的数。没有就可以。因为一旦有公因数, 从0开始加a,因为有公因子n(n> 1),这样的话,a* n == b,说明从0 开始总会到b,这样在模b,余数就又是0.原创 2014-01-21 17:35:22 · 572 阅读 · 0 评论 -
568 - Just the Facts
题目:568 - Just the Facts题目大意:去n!的低位不为零的第一个数。解题思路:每次相乘把末尾的0去掉,但是为了防止末尾为0需要用到前面的数,就需要保留几位数。因为int型可以支持99999 * 10000 的数据大小,所以可以保留后五位数。#includeint n;int main() { while(scanf("%d", &n原创 2014-01-21 13:50:15 · 614 阅读 · 0 评论 -
550 - Multiplying by Rotation
题目:550 - Multiplying by Rotation#includeint d, n, m;int main() { int a , y, k; while(scanf("%d %d %d", &d, &n, &m) != EOF) { a = 0; y = n; k = (y * m + a); y = k % d ; a = k / d;原创 2014-01-21 15:54:17 · 637 阅读 · 0 评论 -
10061 - How many zero's and how many digits ?
题目:10061 - How many zero's and how many digits ?题目大意:求N!在bas进制下的位数和后面的0;解题思路:分两步,一步是求位数,在十进制的情况下:下取整log10(n) + 1,就是求数n的位数;例如log10(10)是1,但是十是两位数,所以加1。因为log10(a*b)= log10(a)+log10(b);所以求N!的位数可以是原创 2014-01-22 13:11:46 · 828 阅读 · 0 评论 -
10879 - Code Refactoring
题目:10879 - Code Refactoring题目大意:就是找一个给定的数的两对都不一样因数(都要大于一)。解题思路:先(从2开始)找一个n的一个因数,这样就形成一对(k, n / k);然后把n/k再找因数m,这样第二对就是(k* m, n/k/m);#includeint t, n, s[5];int main() { scanf("%d"原创 2014-01-20 18:01:01 · 679 阅读 · 0 评论 -
10392 - Factoring Large Numbers
题目:10392 - Factoring Large Numbers题目大意:一个数的因式分解。解题思路:先枚举i(从2开始)是n的最小因子,打印出来,然后n /= i; 然后重复求新的n的最小因子。当n最后等于1,或则是i* i>n,就可以退出了。前者直接退出,后则要打印出n,因为n自己是自己的因子。#includelong long n;int m原创 2014-01-20 23:02:00 · 583 阅读 · 0 评论 -
575 - Skew Binary
题目:575 - Skew Binary题目大意:就是进制转换。解题思路:把输入的数放到字符串中,因为位数多大22-23左右,int十进制只能放十位数左右,long long最多也就18,是说十进制。#include#include#includeconst int N = 25;char s[N];int main () { while(scan原创 2014-01-20 17:30:08 · 607 阅读 · 0 评论 -
350 - Pseudo-Random Numbers
题目:350 - Pseudo-Random Numbers题目大意:按照给定的方式求余数,求这样子余数的循环长度(就是首尾相同的余数之间的长度 包扩首位);解题思路:注意首位相同的不仅仅指与第一个余数相同的,这样第三组数据就过不去了。所以需要开一个数组来存放每次的余数,然后每次得出余数就与前面的进行比较,发现相同就得到长度。#includeconst in原创 2014-01-20 18:56:57 · 697 阅读 · 0 评论