12 2012 档案

摘要:题意 定义f(n)为n各位数字之和,如果n是各位数,则n个数根是f(n),否则为f(n)的数根 现在给出n个Ai,求出A1*A2*…*AN+ A1*A2*…*AN-1+ … + A1*A2+ A1这个式子的数根 多组数据分析 首先,要知道这样一个结论: 任何一个整数模9同余于它的各数位上数字之和 具体证明过程如下: 设自然数N=a[n]a[n-1]…a[0],其中a[0],a[1]、…、a[n]分别是个位、十位、…上的数字 再设M=a[0]+a[1]+…+a[n] 求证:N≡M(mod 9). 证明: ∵ N=a[n]a[n-1]…a[0]=a[n]*10^n+a[n-... 阅读全文
posted @ 2012-12-20 17:25 Rinyo 阅读(1763) 评论(0) 推荐(1) 编辑
摘要:题意 给出n,m,k 接下来有n个数ai,求这些数中有多少个ai*m能被k整除 输出个数分析 首先将k分解质因数,p[i]存的是第i个因子,num[p[i]]表示p[i]这个因子有多少个 将ai*m分解质因数,如果ai*m的质因数中,没有某个p[i],或质因数中某个p[i]的个数少于k中p[i]的个数(即num[p[i]]),那么,这个数就不符合要求 只有这个数的质因数包含了所有p[i],并且每个p[i]都至少有num[p[i]]个,则这个数是可以的,答案+1 在处理这道题上,我们可以1~len(k的质因数个数)循环,对每个数now进行计算,如果当前的num[p[i]]>t*... 阅读全文
posted @ 2012-12-20 17:00 Rinyo 阅读(270) 评论(0) 推荐(0) 编辑
摘要:题意 首先定义超级素数:2 3 5 7...这些都是素数,当这个数是素数且这个数在这个素数列里的第素数个位置,则为超级素数 例如,3在第2个,是超级素数;7在第4个,由于4不是素数,所以7不是超级素数 现在给定一个数n,求n最少能被几个超级素数之和表示,输出个数,并输出这几个超级素数 如果不能表示为几个超级素数之和,输出0分析 首先,利用筛法可以求出1~n内的超级素数,显然,需要用到的素数绝对不会超过n (当然你也可以直接打表) 预处理做好了,下面就是完全背包了 f[i]表示i最少能由f[i]个超级素数表示 所求即为f[n] 初始f[0]=0 方程为f[j]=min{f[... 阅读全文
posted @ 2012-12-19 21:27 Rinyo 阅读(347) 评论(0) 推荐(0) 编辑
摘要:题意 已知2001.1.1是周一 请你求出2001.m.n是周几 如果m,n不合法 输出Impossible分析 开一个数组记录一下每个月的日子,然后模拟 通过循环加到当前的日子 mod 7 即可求出为周几 这题让我想到了usaco的那道星期五是几的题....Accepted Code 1 /* 2 PROBLEM:sgu 115 3 AUTHER:Rinyo 4 MEMO:模拟 5 */ 6 7 #include<cstdio> 8 const int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; ... 阅读全文
posted @ 2012-12-18 21:14 Rinyo 阅读(210) 评论(0) 推荐(0) 编辑
摘要:题意 百慕大的每一座城市都坐落在一维直线上。这个国家的政府决定建造一个新的广播电视台。经过了许多次试验后,百慕大的科学家们提出了一个结论,在每座城市的不满意度等于这座城市的市民数与这座城市与广播电视台的距离的乘积。找到这个一维直线上的一点来建造广播电视台,使得所有城市的不满意度的和最小分析 易证,这个广播电视台必然会建在某个城市点上,否则必然不是最优解 当每个城市都是1个人时,只有当电视台建在中间那个城市,所有人到电视台距离之和才为最小 (奇数个城市时是中间的那个城市;偶数个城市时则为中间两个城市中的任意一个即可。) 但是,每个城市不止一人,该怎么处理呢? 很容易,把每个城市的若干... 阅读全文
posted @ 2012-12-16 17:08 Rinyo 阅读(742) 评论(0) 推荐(0) 编辑
摘要:题意 给出一个数n,如果n能分解成两个质数相乘,则输出Yes,否则输出No 多case.分析 首先先用筛法预处理出1~40000以内的质数,共tot个 然后for (1~tot)循环,如果n能被prime[i]整除,并且除数也是质数,则为Yes,否则为NoAccepted Code 1 /* 2 PROBLEM:sgu113 3 AUTHER:Rinyo 4 MEMO:模拟 质数 5 */ 6 7 #include<cstdio> 8 int prime[40030]; 9 int isprime(int x)10 {11 if (x<2) retur... 阅读全文
posted @ 2012-12-16 16:01 Rinyo 阅读(414) 评论(0) 推荐(0) 编辑
摘要:题意 给出一个a一个b,求a^b - b^a分析 高精度不解释 需要写三个高精度: mult-计算乘法 compare-比较两个数的大小 minus-计算减法Accepted Code 1 { 2 PROBLEM:SGU112 3 AUTHER:Rinyo 4 MEMO:高精度 模拟 5 } 6 Program sgu112; 7 Type 8 Rec = REcord 9 len:Longint;10 a:Array[0..1130]Of Longint;11 End;12 Var13 a,b,aa,bb,i:Lon... 阅读全文
posted @ 2012-12-16 15:27 Rinyo 阅读(272) 评论(0) 推荐(0) 编辑
摘要:题意 给出一个数n,求sqrt(n) (1≤n≤101000)分析 题意很简单,就是开一个数的平方 在网上看了看一些方法,一下摘自“风中落叶”hi.baidu.com/xiamengy1.举例上式意为65536的开平方为256。手开方过程类似于除法计算。为了方便表述,以下仍称类似位置的数为“被除数”、“除数”、“商”。以65536为例,其具体计算过程如下:Step1:将被开方数(为了形象,表述成“被除数”,此例中即为65536)从个位往高位每两位一断写成6,55,35的形式,为了方便表述,以下每一个“,”称为一步Step2:从高位开始计算开方。例如第一步为6,由于22=4<6<9= 阅读全文
posted @ 2012-12-16 14:28 Rinyo 阅读(3901) 评论(0) 推荐(0) 编辑
摘要:题意 给出一个n*n的棋盘,现有游戏规则如下: 玩家一开始在左上角的格子里,魔术师给出多条指令,每条指令包含两个信息: 1、玩家走的步数(>=n,且不重复) 2、魔术师要删除的格子 魔术师可以删除一些这一步走不到的格子,并继续发出指令,知道所有格子(除了一个)被删除,并且玩家被逼到了这个格子中。 求发出指令的一组可行方案分析 不难发现,第一条指令肯定是让玩家走n步,之后步数逐渐增加 我们可以将这个棋盘像国际象棋棋盘那样,黑白染色 易证,走奇数步时会走到另一种颜色上,所以我们只需要每次让玩家走到另一种颜色上去,把相反颜色的格子删掉 但是这样删有两点问题:1、如果一开始n就为偶... 阅读全文
posted @ 2012-12-07 22:41 Rinyo 阅读(470) 评论(0) 推荐(0) 编辑
摘要:题意 定义d(n):d(n)=n+[n的各位数之和] 如果某个数不能由一个数通过多次d(n)得到这个数,那么称这个数为“自我数” 比如:d(12)=12+1+2=15 d(d(12))=d(15)=15+1+5=21 d(d(d(12)))=d(d(15))=d(21)=21+2+1=24 ………… 则15、21、24等数都是可以得到的,不是“自我数” 而例如20,则就不能通过由某个数多次d(n)得到,所以20为一个“自我数” 现在给定一个n和m,求1~n中“自我数”的个数 并且输出其中第a[i]个(i∈[1,m])“自我数”分析 不难想到,通过筛... 阅读全文
posted @ 2012-12-04 23:33 Rinyo 阅读(383) 评论(1) 推荐(0) 编辑
摘要:题意 求有多少个平方后末尾为987654321的n位数分析 先写个小程序 通过暴力枚举: 当n<=8时,无解 当n=9时 有8个满足要求的数: 111111111 119357639 380642361 388888889 611111111 619357639 880642361 888888889 容易知道,某个数的平方为987654321时,以这个数结尾的数,它的平方也是987654321 所以当n>9时,满足条件的数只能以上述八个数结尾 当n=10时,由于最高位不为0,所以又8*9=72个 n=11时,71*10个;n=1... 阅读全文
posted @ 2012-12-04 21:36 Rinyo 阅读(570) 评论(0) 推荐(0) 编辑
摘要:题意 There is sequence 1, 12, 123, 1234, ..., 12345678910, ... . Given first N elements of that sequence. You must determine amount of numbers in it that are divisible by 3. 有种数列:1,12,123..给出一个n,求这个数列中能被3整除的数的个数分析先来看看这几组数 第三列数表示1234..n这样的数除以3的余数,第四列数表示能被3整除的个数,即为答案1 1 1 02 12 0 13 123 0 24 1234 1 25.. 阅读全文
posted @ 2012-12-02 18:51 Rinyo 阅读(1001) 评论(0) 推荐(0) 编辑
摘要:题意 给出n朵花,m个花瓶,第i号花插在第j个花瓶可以得到的权值是w,要求从左向右依次插花,求可以得到的最大权值,并打印插花方案分析 简单的线性dp,记f[i,j]为从第一号花开始插,插到了第i号花,且第i号花插在第j个花瓶,所能得到的权值之和为多少 显然,f[i,j]=max{f[i-1,k]+w[i,j]} k∈[i-1,j) 这样,问题的一部分求解完了,关键是如何记录答案 开个数组ans[i,j,0..1]。表示第i朵花插在第j个花瓶时,它的前一朵花为ans[i,j,0],且这朵花插在了f[i,j,1]上。 这样,写个递归就可以得到插花方案Accepted Code 1 /*... 阅读全文
posted @ 2012-12-02 17:56 Rinyo 阅读(172) 评论(0) 推荐(0) 编辑
摘要:题意 给出一个数n,求出比n小且与n互质的个数分析 欧拉函数模板 通式: 欧拉函数还有几个性质: 1.若p为质数,则φ(p)=p-1 2.若p为质数,则φ(p^a)=(p-1)*p^(a-1) 3.若p,q互质,则φ(p*q)=φ(p)*φ(q)Accepted Code 1 /* 2 PROBLEM:sgu102 poj 2407 3 AUTHER:Rinyo 4 MEMO:Euler's totient function 欧拉函数 5 */ 6 7 8 #include<cstdio> 9 int n;10 int main()11 {12 ... 阅读全文
posted @ 2012-12-02 17:00 Rinyo 阅读(281) 评论(0) 推荐(0) 编辑