• AcWing第 80 场周赛


    末尾字母

    给定一个由大小写字母、空格和问号组成的字符串。

    请你判断字符串中的最后一个字母是否是元音字母。

    我们认为元音字母共有 6 个,分别为:A、E、I、O、U、Y(当然还有它们的小写)。

    输入格式

    一个由大小写字母、空格和问号组成的字符串。

    保证问号在字符串中恰好出现一次,且一定出现在最后。

    字符串中至少包含一个字母。

    输出格式

    如果字符串中的最后一个字母是元音字母,则输出 YES,否则输出 NO

    注意,我们问的是最后一个字母,而不是最后一个字符,空格和问号不算作字母。

    数据范围

    所有测试点满足,输入字符串的长度范围 [2,100]。

    输入样例1:

    Is it a melon?
    

    输出样例1:

    NO
    

    输入样例2:

    Is it an apple?
    

    输出样例2:

    YES
    

    输入样例3:

      Is     it a banana ?
    

    输出样例3:

    YES
    

    输入样例4:

    Is   it an apple  and a  banana   simultaneouSLY?
    

    输出样例4:

    YES

    第一个版本,可以先按照思路一步一步写。定义一个字符串a表示初次输入的那个字符串,需要包含空格输入所以我们使用getline。在这个while循环里提出字母的字符,并负值于字符串b。获取倒数第一个字母是否为,aeiouy。

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. string a;
    6. string b;
    7. while(getline(cin,a))
    8. {
    9. int n=a.size();
    10. int temp = 0;
    11. for(int i=0;i
    12. {
    13. if(a[i]!=32){
    14. b[temp]=a[i];
    15. temp++;
    16. }
    17. }
    18. //cout<
    19. int dier = temp-2;
    20. char two = b[dier];
    21. //cout<
    22. if(two=='A'||two=='a'){
    23. cout<<"YES"; return 0;
    24. }
    25. if(two=='E'||two=='e'){
    26. cout<<"YES";return 0;
    27. }
    28. if(two=='I'||two=='i'){
    29. cout<<"YES";return 0;
    30. }
    31. if(two=='O'||two=='o'){
    32. cout<<"YES";return 0;
    33. }
    34. if(two=='U'||two=='u'){
    35. cout<<"YES";return 0;
    36. }
    37. if(two=='Y'||two=='y'){
    38. cout<<"YES";return 0;
    39. }
    40. //cout<
    41. cout<<"NO";
    42. }
    43. return 0;
    44. }

     在这个的基础上,做一些改进

    1. #include
    2. using namespace std;
    3. char ch,ans = ' ';
    4. string s = "aoeiuy";
    5. int main () {
    6. while (cin >> ch) {
    7. if (isalpha (ch)) ans = ch;
    8. }
    9. if (s.find (tolower (ans)) != -1) puts ("YES");
    10. else puts ("NO");
    11. return 0;
    12. }

     寻找数字

    给定一个正整数 n,请你找到一个正整数 x,要求:

    1. x≥n
    2. x 的各个数位均不包含 4 和 7 以外的数字,且 x 中包含的 4 的数量与 7 的数量恰好相等。
    3. 满足前两个条件的前提下,x 应尽可能小。

    输入格式

    一个正整数 n。

    输出格式

    一个正整数,表示 x。

    数据范围

    前 66 个测试点满足 1≤n≤5000。
    所有测试点满足 1≤n≤109。

    输入样例1:

    4500
    

    输出样例1:

    4747
    

    输入样例2:

    47
    

    输出样例2:

    47

    最开始想到的就是用打表,但是在acwing上肯定超时。

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. for(int i=1;i<=1000000000;i++){
    6. int s=0,f=0;
    7. int t=i,ok=1;
    8. while(t>0){
    9. if(t%10==4)f++;
    10. else if(t%10==7)s++;
    11. else ok=0; t/=10;
    12. }
    13. if(s==f&&ok)cout<<" else if(n<="<")cout<<"<";\n";
    14. }
    15. }

    摆放棋子

    给定 n1n1 个完全相同的黑色棋子和 n2n2 个完全相同的白色棋子。

    请你将所有棋子摆成一排。

    在所有棋子都摆放好后,需满足:

    1. 不得有超过 k1k1 (即大于 k1k1)个黑色棋子连续相邻的排在一起。
    2. 不得有超过 k2k2 (即大于 k2k2)个白色棋子连续相邻的排在一起。

    请问一共有多少种不同的摆放方法。

    由于结果可能很大,你只需要输出对 108108 取模后的结果。

    输入格式

    共一行,包含 44 个整数 n1,n2,k1,k2n1,n2,k1,k2。

    输出格式

    输出满足要求的摆放方法数量对 108108 取模后的结果。

    数据范围

    前 44 个测试点满足 1≤n1,n2≤101≤n1,n2≤10。
    所有测试点满足 1≤n1,n2≤1001≤n1,n2≤100,1≤k1,k2≤101≤k1,k2≤10。

    输入样例1:

    2 1 1 10
    

    输出样例1:

    1
    

    输入样例2:

    2 3 1 2
    

    输出样例2:

    5
    

    输入样例3:

    2 4 1 1
    

    输出样例3:

    0

    定义状态f[i][j][k]  为前 i 个棋子,j 个白棋,最后填的是k ( 0 表示最后填黑,1 表示最后填白)其中aa 为枚举填的棋子数量,第一个式子推的是填白棋,第二个式子推的是填黑棋,答案就是 (f[n][n2][0]+f[n][n2][1])modp(f[n][n2][0]+f[n][n2][1])modp ,n 为总棋子个数,注意第一维要开两倍。

    1. #include
    2. #define pc(c) putchar(c)
    3. #define rep(a,b,c) for (int (a) = (b) ; (a) < (c) ; ++(a))
    4. using namespace std;
    5. using ll = long long ;
    6. using pii = pair<int,int> ;
    7. const int maxn = 210 ,p = 1e8;
    8. int f[maxn][maxn][2];
    9. int main(){
    10. int n1,n2,k1,k2,n;
    11. cin >> n1 >> n2 >> k1 >> k2 ;
    12. f[0][0][0] = f[0][0][1] = 1;
    13. n = n1 + n2 ;
    14. for (int i = 1 ; i <= n ; ++ i ){
    15. for (int j = 0; j <= n2 && j <= i ; ++ j){
    16. if ( i > n1 + j ) continue ;
    17. for (int a = 1 ; a <= j && a <= k2 ; ++ a) {
    18. f[i][j][1] = (f[i][j][1] + f[i - a][j - a][0]) % p ;
    19. }
    20. for (int a = 1 ; j + a <= i && a <= k1 ; ++ a ){
    21. f[i][j][0] = (f[i][j][0] + f[i - a][j][1]) % p;
    22. }
    23. }
    24. }
    25. cout << (f[n][n2][0] + f[n][n2][1]) % p;
    26. return 0;
    27. }

     

  • 相关阅读:
    基于ARM+FPGA的ISA总线/MMи总线接口转换设计在轨道交通的应用
    争议不断的AI绘画,靠这个成为了顶流?
    ③ 软件工程CMM、CMMI模型【软考中级-软件设计师 考点】
    【C++】一文解析std::binary_function、std::bind1st、std::bind2nd、std::bind
    Supervised Machine Learning Regression and Classification(吴恩达机器学习课程笔记)
    RNN在图像压缩领域的应用-Variable rate image compression with recurrent neural networks
    java servlet校园闲置商品交易平台的设计与实现源码
    使用 ES 实现疫情地图或者外卖点餐功能(含代码及数据)
    推荐一个支持低代码开发的OA开源系统
    在教育领域,AI垂直大模型应用场景总结!
  • 原文地址:https://blog.csdn.net/GeekAlice/article/details/128167055