社区讨论

求调,50分

P1098[NOIP 2007 提高组] 字符串的展开参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@m5fba4sj
此快照首次捕获于
2025/01/02 20:37
去年
此快照最后确认于
2025/01/03 13:30
去年
查看原帖
Wa on 3,5,7,9,10;
CPP
#include<bits/stdc++.h>
using namespace std;
char upp(char s) {
    return s - 'a' + 'A';
}
bool isletter(char s) {
    return (('a' <= s && s <= 'z' ) || ('A' <= s && s <= 'Z'));
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int p1, p2, p3;
    cin >> p1 >> p2 >> p3;
    //2 3 2
    char a[110];
    cin >> a;
    int b = strlen(a);
    for(int i = 0; i < b; i++) {
        bool flag = false;
        if(a[i + 1] == '-') {
            if(isletter(a[i]) && isletter(a[i + 2]) && a[i] < a[i + 2]) {
                cout << a[i];
                flag = true;
                a[i + 1] = '\0';
                if(p3 == 1) {
                    if(p1 == 1) {
                        for(char j = a[i] + 1; j < a[i + 2] ; j++) {
                            for(int k = 1; k <= p2; k++) {
                                cout << j;
                            }
                        }
                    } else if(p1 == 2) {
                        for(char j = a[i] + 1; j < a[i + 2] ; j++) {
                            for(int k = 1; k <= p2; k++) {
                                cout << upp(j);
                            }
                        }
                    } else {
                        for(char j = a[i] + 1; j < a[i + 2] ; j++) {
                            for(int k = 1; k <= p2; k++) {
                                cout << '*';
                            }
                        }
                    }
                } else {
                    cout << a[i];
                    if(p1 == 1) {
                        for(char j = a[i + 2] - 1; j > a[i] ; j--) {
                            for(int k = 1; k <= p2; k++) {
                                cout << j;
                            }
                        }
                    } else if(p1 == 2) {
                        for(char j = a[i + 2] - 1; j > a[i] ; j--) {
                            for(int k = 1; k <= p2; k++) {
                                cout << upp(j);
                            }
                        }
                    } else {
                        for(char j = a[i + 2] - 1; j > a[i] ; j--) {
                            for(int k = 1; k <= p2; k++) {
                                cout << '*';
                            }
                        }
                    }
                }
            } else if(isdigit(a[i]) && isdigit(a[i + 2]) && a[i] < a[i + 2]) {
                flag = true;
                a[i + 1] = '\0';
                if(p3 == 1) {
                    if(p1 == 1 || p1 == 2) {
                        for(char j = a[i]; j < a[i + 2]; j++) {
                            for(int k = 1; k <= p2; k++) {
                                cout << j;
                            }
                        }
                    } else {
                        for(char j = a[i]; j < a[i + 2]; j++) {
                            for(int k = 1; k <= p2; k++) {
                                cout << '*';
                            }
                        }
                    }
                } else {
                    if(p1 == 1 || p1 == 2) {
                        for(char j = a[i + 2]; j > a[i]; j--) {
                            for(int k = 1; k <= p2; k++) {
                                cout << j;
                            }
                        }
                    } else {
                        for(char j = a[i + 2]; j > a[i]; j--) {
                            for(int k = 1; k <= p2; k++) {
                                cout << '*';
                            }
                        }
                    }
                }
            }
        }
        if(!flag) {
            if(a[i] != '\0') {
                cout << a[i];
            }
        }
    }
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...