码迷,mamicode.com
首页 > 编程语言 > 详细

《刘汝佳算法竞赛入门经典》第五章 数论

时间:2014-10-17 21:48:03      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   io   os   ar   for   strong   

Skew Binary 斜二进制

斜二进制的每位为0, 或 1, 最低位可以为2. 第k位的。。。代表 2k+1 -1,给出一个斜二进制数,把他转换成十进制数。正常模拟就好

bubuko.com,布布扣
 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 }
View Code

 

Light, more light 灯光

一个走廊里有n个灯泡灭着,一个人从第1个灯走到第n个灯算走一次(从第n个灯走回来不算),这个人一共会走n次,每次走到第i个灯泡的时候,如果n能被i整除,他会改变这个灯的状态,求他走了n次之后,最后一盏灯是否是亮着的

计算从1到n,n有多少个因子,如果是奇数个就是灭的,偶数个就是亮的 (第一发交了暴力超时了) 。。。。。。。。。。。。。。。搜题解!!

关键是判断这个n是不是某个数的平方,如果是的话会被改变状态奇数次,能被打开。p.s.灯泡初始状态是灭的是从数据看出来的。。。还有会爆int

bubuko.com,布布扣
 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 }
View Code

 

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

 

《刘汝佳算法竞赛入门经典》第五章 数论

标签:style   blog   http   color   io   os   ar   for   strong   

原文地址:http://www.cnblogs.com/chbeater/p/4031986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!