uva 11526 H(n) (数论)】的更多相关文章

转载自 http://blog.csdn.net/synapse7/article/details/12873437 这道题我自己做的时候没有想到好的优化方法,提交的时候借鉴这篇文章的内容,转载如下: -----------------------------------------------------------------------------------------------------------------------------------------------------…
题意: long long H(int n){ long long res = 0; for( int i = 1; i <= n; i=i+1 ){ res = (res + n/i); } return res;} 求这样一个函数的值. 分析: 这个题很像我做莫比乌斯反演时的一个分块加速的优化. 注意到n/i的整数部分,有许多重复的数.具体一点,对于某一个i,在区间[i, n / (n / i)]中n/i的值是一样的. 例如在[17, 20]中的i,100/i的值都是5. #include…
原来做过的题再看还是没想出来,看来当时必然没有真正理解.这次回顾感觉理解更透彻了. 网上的题解差不多都是一个版本,而且感觉有点扯.根据n=20猜出来的? 好吧哪能根据一个就猜到那么变态的公式.其实这题稍微找下规律就好.当然可能没有公式法效率高,但理解起来更容易吧. 你用n=20的例子,那么我也用.但我的想法是这样的. sum = 0; 我们考虑 i 是多少时 n/i = 1: 20/1 = 20, 故i <= 20, 又20/2 = 10,  故i > 10, 即 10 < i <…
What is the value this simple C++ function will return? long long H(int n) { ; ; i <= n; i=i+ ) { res = (res + n/i); } return res; } Input The first line of input is an integer T (T ≤ 1000) that indicates the number of test cases. Each of the next T…
UVA 10627 - Infinite Race option=com_onlinejudge&Itemid=8&page=show_problem&category=516&problem=1568&mosmsg=Submission+received+with+ID+13837674" target="_blank" style="">题目链接 题意:一段跑道,A,B分别在两端,速度为u.v,两个人跑到还…
UVA 11754 - Code Feat 题目链接 题意:给定一个c个x, y1,y2,y3..yk形式,前s小的答案满足s % x在集合y1, y2, y3 ... yk中 思路:LRJ大白例题,分两种情况讨论 1.全部x之积较小时候,暴力枚举每一个集合选哪个y.然后中国剩余定理求解 2.全部x之积较大时候,选定一个k/x尽可能小的序列,枚举x * t + y (t = 1, 2, 3...)去暴力求解. 代码: #include <stdio.h> #include <string…
UVA 718 - Skyscraper Floors 题目链接 题意:在一个f层高的楼上,有e个电梯,每一个电梯有x,y表示y + k * x层都能够到,如今要问从a层是否能到达b层(中间怎么换乘电梯不限制) 思路:对于两个电梯间能不能换乘,仅仅要满足y[i] + xx x[i] == y[j] + yy y[j].然后移项一下,就能够用拓展欧几里得求解,进而求出x,y的通解,然后利用通解范围x' >= 0, y' >= 0, x[i] x' + y[i] <= f, x[j] y'…
UVA 12009 - Avaricious Maryanna 题目链接 题意:给定一个n.求出n个数位组成的数字x,x^2的前面|x|位为x 思路:自己先暴力打了前几组数据,发现除了1中有0和1以外,其它数据都是由前一项往上再加入一位得到的,因此设新数字为(a∗10k+x)2=(a∗10k)2+x2+2∗a∗10k∗x 因此(a∗10k+x)=((a∗10k)2+x2+2∗a∗10k∗x)/10k%10 化简后得到x2/10k%10+2∗a∗x%10 因此仅仅要能求出x2/10k%10.然后再…
UVA 10951 - Polynomial GCD 题目链接 题意:给定两个多项式,求多项式的gcd,要求首项次数为1,多项式中的运算都%n,而且n为素数. 思路:和gcd基本一样,仅仅只是传入的是两个多项式,因为有%n这个条件.所以计算过程能够用乘法逆去计算除法模,然后最后输出的时候每项除掉首项的次数就是答案了. 代码: #include <stdio.h> #include <string.h> #include <vector> using namespace…
UVA 10555 - Dead Fraction 题目链接 题意:给定一个循环小数,不确定循环节,求出该小数用分数表示,而且分母最小的情况 思路:推个小公式 一个小数0.aaaaabbb... 表示为n/m形式,而且a为整数部分有c位, b为小数部分有d位 那么aaaaa.bbb...和aaaaabbb....分别能够表示为10c∗(n/m)和10c+d∗(n/m) 两式相减得:aaaaabbb−aaaaa=(10c+d−10c)(n/m) 那么设n1 = aaaaabbb ,n2 = aaa…