コンテスト(新入生の季節)プログラミングソフトウェアおよびマイクロエレクトロニクスのハルビン大学 - 同期のゲームを(レビュー富栄TI)

- Rは、すべてのコードをシミュレートして、最後の二つの質問の焦点を説明していません

レレ小さな文字列S

https://ac.nowcoder.com/acm/contest/1877/S

C現在の文字C.前にいくつかの文字がある示し、前面から背面へトラバースするレコード数 バックから数Nのレコードを、Nは現在の文字の後に文字の数を表し、

最後に、アレイを介し手前から奥には、現在の文字がHであるとき、NUMC * numNケースがあり、すべての合計に対する答えです。

#include<bits/stdc++.h>
using namespace std;
const int MAXN=8000;
int num2[MAXN+11];
int main() {
    string s;
    cin>>s;
    for(int i=s.length()-1;i>=0;i--) {
        num2[i]=num2[i+1];
        if(s[i]=='N')
            num2[i]++;
    }
    long long cnt=0;
    for(int i=0;i<s.length();i++) {
        if(s[i]=='C') {
            for(int j=i+1;j<s.length();j++) {
                if(s[j]=='H')
                    cnt+=num2[j];
            }
        }
    }
    printf("%lld\n",cnt);
    return 0;
}

T秒のレレ少数

https://ac.nowcoder.com/acm/contest/1877/T

特別には、それを記録ポータル

私はこのようなソリューション、数論だけGCDを見たのは初めて。%%%

#include<cstdio>  
#include<cstring>  
#include <algorithm>

using namespace std;

int ones[9999],tens[999], n, i, j, k, s, t, api, apj, aps, apt;
bool ck() {
    int p, r;
    if (i > 5)
        return 1;
    p = s;
    r = t;
    for (int q = 0; q < j; q++)
        p = p * 10 + s;
    for (int q = 0; q < i - j; q++)
        p = p * 10;
    for (int q = 1; q < i - j; q++)
        r = r * 10 + t;
    return p + r > n;
}
 
int main() {
    while (scanf("%d",&n), n) {
        printf("%d: ", n);
        if (n == 1) {
            puts("10");
            continue;
        }
        ones[0] = 1;
        tens[0] = 1;
        for (i = 1; i < 9999; i++)
            ones[i] = (ones[i - 1] * 10 + 1) % n;
        for (i = 1; i < 999; i++)
            tens[i] = tens[i - 1] * 10 % n;
        for (i = 1, aps = 0; i < 9999; i++) {
            k = 0;
            if ((n % 10 == 0 || n % 25 == 0) && i > 11)
                k = i - 11;
            for (j = k; j < i; j++)
                for (s = 1; s < 10; s++)
                    for (t = 0; t < (n % 10 ? 10 : 1); t++)
                        if (t != s && (((long long)ones[j]) * tens[i - j] * s + ones[i - j - 1] * t) % n == 0 && ck() &&
                            (!aps || s < aps || s == aps && j > apj && s < apt)) {
                            api = i;
                            apj = j;
                            aps = s;
                            apt = t;
                        }
            if (aps)
                break;
        }
        for (int x = 0; x < apj + 1; x++)
            printf("%d", aps);
        for (int x = 0; x < api - apj; x++)
            printf("%d", apt);
        printf("\n");
    }
    return 0;
}

 

公開された42元の記事 ウォンの賞賛1 ビュー6681

おすすめ

転載: blog.csdn.net/Ls_attack/article/details/104065695