首页 > 代码库 > 《刘汝佳算法竞赛入门经典》第五章 数论
《刘汝佳算法竞赛入门经典》第五章 数论
Skew Binary 斜二进制
斜二进制的每位为0, 或 1, 最低位可以为2. 第k位的。。。代表 2k+1 -1,给出一个斜二进制数,把他转换成十进制数。正常模拟就好
1 #include <cstdio> 2 #include <cstring> 3 char A[1000]; 4 5 int main() { 6 while (scanf("%s", A) != EOF) { 7 if (A[0] == ‘0‘) break; 8 int len = strlen(A); 9 int ans = 0;10 for (int i = len-1; i >= 0; i--) 11 ans += (A[i] - ‘0‘)* ((1 << (len-i)) -1);12 printf("%d\n", ans);13 }14 return 0;15 }
Light, more light 灯光
一个走廊里有n个灯泡灭着,一个人从第1个灯走到第n个灯算走一次(从第n个灯走回来不算),这个人一共会走n次,每次走到第i个灯泡的时候,如果n能被i整除,他会改变这个灯的状态,求他走了n次之后,最后一盏灯是否是亮着的
计算从1到n,n有多少个因子,如果是奇数个就是灭的,偶数个就是亮的 (第一发交了暴力超时了) 。。。。。。。。。。。。。。。搜题解!!
关键是判断这个n是不是某个数的平方,如果是的话会被改变状态奇数次,能被打开。p.s.灯泡初始状态是灭的是从数据看出来的。。。还有会爆int
1 #include <cstdio> 2 #include <cmath> 3 typedef long long LL; 4 5 int main() { 6 LL n; 7 while (scanf("%lld", &n) != EOF && n) { 8 LL k = (LL)sqrt(n*1.0); 9 if (k*k == n) puts("yes");10 else puts("no");11 }12 return 0;13 }
Multiplying by Rotation 移位除法
每行3个数,n,a,b。n表示进制数,a,b没读懂
Just the Facts 阶乘
按照格式输出一个数n的阶乘的最后一个非0数字
思路:最后一位只与最后一位有关(好绕),应该没几种情况
1! = 1, 2! = 2, 3! = 6; 4! = 8, 5!= 4, 6! = 4, 7! = 8, 8!= 4, 9! = 6, 10! = 6, 11 ! = 6; 12 ! = 2, 13 ! = 6
《刘汝佳算法竞赛入门经典》第五章 数论
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。