摘要: DP(记忆化搜索)第一次在Ural做题,所以选个简单的DP,无奈变量写错WA了两次,终于AC了题意:输入n和k,表示一个n位的k进制数,这个数字要符合两个条件,没有前导0(否则怎么算是n位数呢?),不能有两个或以上连续的0,问你一共有多少个这样的n位的k进制数这题,最直观的方法就是dfs,不断枚举,枚举到第n层就功德圆满了,然后再判断这个n位数是否符合我们的要求。但是可想而知是会超时的,那么怎么优化呢?第一,当前位的数字决定了下一位能出现什么数字,如果当前位非0,那么下一位[0,k-1]都可以,如果当前位为0则下一位[1,k-1],这样就可以在枚举的过程中避免掉两个连续的0的情况但是这个优化不 阅读全文
posted @ 2013-01-19 22:57 Titanium 阅读(938) 评论(0) 推荐(0) 编辑
摘要: 模运算及其性质本文以c++语言为载体,对基本的模运算应用进行了分析和程序设计,以理论和实际相结合的方法向大家介绍模运算的基本应用。。基本理论基本概念:给定一个正整数p,任意一个整数n,一定存在等式 n = kp + r ;其中k、r是整数,且 0 ≤ r < p,称呼k为n除以p的商,r为n除以p的余数。对于正整数p和整数a,b,定义如下运算:取模运算:a % p(或a mod p),表示a除以p的余数。模p加法:(a + b) % p ,其结果是a+b算术和除以p的余数,也就是说,(a+b) = kp +r,则(a + b) % p = r。模p减法:(a-b) % p ,其结果是a- 阅读全文
posted @ 2013-01-19 20:07 Titanium 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 数学题(模运算)题意:详细的翻译http://www.cnblogs.com/devymex/archive/2010/08/28/1810480.html简单的题意:给你一个字符串(可能有空格,最多1024字符),每个字符代表一个数字,因为最多有256个字符,所以这个字符串其实是表示一个256进制的数字。但这还没完,在这个256进制数字要再加两位,组成一个新的256进制数字,这个数字要能被g=34943(这是个十进制数字)整除,要你输出新添加的那两个数字是什么,这两个数字要以16进制的形式输出,用空格隔开思路:把原来的256进制数字先转为十进制数x,那么再添加两位后,其实原本的数字翻了2倍, 阅读全文
posted @ 2013-01-19 20:00 Titanium 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 欧拉函数用符号φ表示,φ(n)表示小于等于n的正整数数中与n互质的数的个数φ(1)=1 ; 1φ(2)=1 ; 1φ(3)=2 ; 1,2φ(4)=2 ; 1,3φ(5)=5 ; 1,2,3,4φ(6)=2 ; 1,5 φ(7)=6 ; 1,2,3,4,5,6φ(8)=4 ; 1,3,5,7…………………………其中当n为素数时,φ(n)=n-1; 然后再将这个问题推广到一般性——1.怎么求任意的φ(n)。2.怎么求n以内所有的φ(n)1.对于任意的n,φ(n)=n x (1-p1) x (1-p2) x (1-p3) …………(1-pm)其中p1,p2,p3……pm是n能分解出... 阅读全文
posted @ 2013-01-19 16:44 Titanium 阅读(540) 评论(0) 推荐(0) 编辑