查看: 1047|回復: 2
打印 上一主題 下一主題

[解決] [求救] UVA 10789

[複製鏈接]
  • TA的每日心情
    無聊
    2014-8-31 22:58
  • 簽到天數: 2 天

    [LV.1]初來乍到

    7

    主題

    12

    帖子

    69

    積分

    高一新生

    Rank: 2

    積分
    69
    跳轉到指定樓層
    樓主
    發表於 2014-8-13 00:52:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

    趕快加入我們來參與討論吧!

    您需要 登錄 才可以下載或查看,沒有帳號?加入我們

    x
    本帖最後由 bac 於 2014-8-13 16:23 編輯

    題目

    我的做法是
    先建質數表,再用upper_bound找出有多少個,然後檢察是否為質數
    不知道為什麼一直WA又找不出錯的測資
    求解

    [C++] 純文本查看 復制代碼
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    
    using namespace std;
    
    
    bool nprime[4096] = {false};
    
    
    inline void init_prime()
    {
            for(int i = 3 ; i < 64 ; i++)
                    if(!nprime[i])
                            for(int k = 4095/i , j = i*k ; k>=i ; k--, j-=i)
                                    if(!nprime[k])
                                            nprime[j] = true;
            for(int i = 4 ; i < 2500 ; i+=2)
                    nprime[i] = true;
            nprime[1] = true;
    }
    
    int main()
    {
            //init
            int time;
            char str[2015];
            
            init_prime();
            
    
            //process
            scanf("%d",&time);
            for(int t = 1 ; t <= time ; t++)
            {        
                    bool empty = true;
            
                    scanf("%s",str);
                    int len = strlen(str);
                    str[len] = 127;
                    printf("Case %d: ", t);
                    for(int i = 0 ; i < len ; )
                    {
                            int j = upper_bound(str, str+len, str[i]) - str;
                    //        printf("\n%c : %d\n", str[i] ,j-i);
                    //        cout << "i=" << i << ", j=" << j << endl;
                            if(!nprime[j-i])
                            {
                                    empty = false;
                                    putchar(str[i]);
                            }
                            i = j;
                    }
                    
                    if(empty)
                            printf("empty");
                    putchar('\n');
            }
            
            return 0;
    }
    



    回復

    使用道具 檢舉

  • TA的每日心情
    鬱悶
    2014-9-27 02:19
  • 簽到天數: 23 天

    [LV.4]偶爾看看III

    12

    主題

    94

    帖子

    976

    積分

    高級會員

    Rank: 4

    積分
    976

    熱心會員

    頭香
    發表於 2014-8-13 03:27:20 | 只看該作者
    我打 ccbbaa 之頪的就會顯示 empty
    題目似乎沒有說不能從較後面的英文字母打回前面?

    點評

    jd3
    感謝~找到問題了 我以為他說sorted就會是由小到大...  發表於 2014-8-13 16:23
    回復 支持 反對

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表