Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

Re:Notice~数据是不是有问题?

Posted by 578141611 at 2012-07-15 09:45:58 on Problem 2992
In Reply To:Re:Notice~数据是不是有问题? Posted by:NEU_like at 2011-10-17 14:15:39
> 筛素数筛了431以内wa了一下午。改成450就过了。
> 这是wa的代码:
> 
> const int N = 500;
> const int M = 200;
> #define LL  long long
> 
> bool is[N];
> int prm[M];
> LL a[N][M], t;
> 
> int getprm(int n){
>     int i, j, k = 0;
>     int s, e = (int)(sqrt(0.0 + n) + 1);
>     memset(is, 1, sizeof(is));
>     prm[k++] = 2; is[0] = is[1] = 0;
>     for (i = 4; i < n; i += 2) is[i] = 0;
>     for (i = 3; i < e; i += 2) if (is[i]) {
>         prm[k++] = i;
>         for (s = i * 2, j = i * i; j < n; j += s) is[j] = 0;
>     }
>     for ( ; i < n; i += 2) if (is[i]) prm[k++] = i;
>     return k;
> }
> 
> LL getx(int n, int x) {//非递归写法
>     LL ret = 0;
>     while (n){
>         ret += n/x; n /= x;
>     }
>     return ret;
> }
> 
> void init() {
> 
>     t = getprm(431); //把这里改成450就过了。
>     memset(a, 0, sizeof(a));
> 
>     for (int i = 0; i <= 431; i++)
>         for (int j = 0; j < t && i >= prm[j]; j++)
>             a[i][j] = getx(i, prm[j]);
> }
> 
> 
> int main() {
> 
>     int n, k;
>     init();
> 
>     while (scanf("%d%d", &n, &k)!=EOF) {
> 
>         LL ans = 1;
>         for (int i = 0; i < t && n >= prm[i]; i++) {
>             LL temp = a[n][i] - a[n - k][i] - a[k][i];
>             ans *= (temp + 1);
>         }
>        printf("%lld\n", ans);
> 
>     }
> 
>     return 0;
> }
> 

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator