2013年4月30日

uva10125 - Sumsets

摘要: 最简单的暴力 会超时所以我们要想方设法的减少循环层数或者循环次数,a+b+c = d那么a+b=d-c这不是简单的等式变形而是意味着我们循环的次数减少了。我们对于d和c分别用一层循环,对于a+b只用一层循环。很妙的转变,,,代码如下:#include #include using namespace std; int a[1010]; int main () { int n; while(scanf("%d",&n),n) { for(int i = 0; i = 0; i--) { for(int j = n... 阅读全文
posted @ 2013-04-30 21:33 Primo... 阅读(140) 评论(0) 推荐(0) 编辑

uva188 - Perfect Hash(完美哈希)

摘要: 思路不难。重要的是理解题意。。。照着题意写代码。。。代码如下:#include #include #include using namespace std; char s[300]; int w[300]; int main () { while(gets(s)) { int len = strlen(s), tt = 0, n = 0, min_ = 2147483645; for(int i = 0, f = 0; i tt?tt:min_; tt = 0; f = 0;} continue; } tt = (t... 阅读全文
posted @ 2013-04-30 20:56 Primo... 阅读(176) 评论(0) 推荐(0) 编辑

nefu2 - 猜想

摘要: 遍历2-n/2的所有的数,如果i和n-i都是素数的话就累加上1。。。代码如下:#include #include #define M 16777250 bool is_prime[M]; void judge() { int len = sqrt(M+0.5); for(int i = 2; i <= len; i++) if(is_prime[i]==0) for(int j = i*i; j <= M; j+=i) is_prime[j] = 1; } int main () { int n; judge(); while(scanf("... 阅读全文
posted @ 2013-04-30 14:08 Primo... 阅读(105) 评论(0) 推荐(0) 编辑

nefu117 - 素数个数的位数

摘要: 以前没注意到floor()返回的是double型的数据,素数定理的应用,,,代码如下:#include #include int main () { long long n; while(scanf("%lld",&n)==1) { double tt = log10(n)+log10(log(10.0)); printf("%.0lf\n",floor(n-tt)+1); } return 0; } 犯错代码:#include #include int main () { long long n; ... 阅读全文
posted @ 2013-04-30 13:47 Primo... 阅读(142) 评论(0) 推荐(0) 编辑