头像

爱宣纸




离线:53分钟前


最近来访(4)
用户头像
tianming
用户头像
yxc的小迷妹

新鲜事 原文

原来acwing的灰度是在这里设置的
图片


活动打卡代码 AcWing 763. 循环相克令

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    int n;
    cin >> n;
    while (n -- )
    {
        string a, b;
        cin >> a >> b;

        if (a.size() - b.size() == 3 || a.size() - b.size() == -1 || a.size() - b.size() == -2) cout << "Player1" << endl;
        if (strcmp(a.c_str(), b.c_str()) == 0) cout << "Tie" << endl;        
        if (b.size() - a.size() == 3 || b.size() - a.size() == -1 || b.size() - a.size() == -2) cout << "Player2" << endl;
    }
    return 0;
}



string定义的字符串在使用strcmp函数时要写成strcmp(str.c_str(), s.c_str())的形式。

#include <iostream>
#include <string.h>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    string str;
    getline(cin, str);

    string s;
    getline(cin, s);

    for (int i = 0; i < str.size(); i ++ ) 
        if (str[i] >= 'A' && str[i] <= 'Z') str[i] += 'a' - 'A';
    for (int i = 0; i < s.size(); i ++ )
        if (s[i] >= 'A' && s[i] <= 'Z') s[i] += 'a' - 'A';

    if (strcmp(str.c_str(), s.c_str()) < 0) puts("<");
    else if (strcmp(str.c_str(), s.c_str()) == 0) puts("=");
    else if (strcmp(str.c_str(), s.c_str()) > 0) puts(">");

    return 0;

}



cin方法

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    string str;
    while (cin >> str) cout << str << ' ';
    return 0;
}

第一类双指针方法

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    string str;
    getline(cin, str);

    string res;
    for (int i = 0; i < str.size(); i ++ )
    {
        if (str[i] != ' ') res += str[i];
        else 
        {
            res += ' ';
            int j = i;
            while (j < str.size() && str[j] == ' ') j ++; //双指针算法:j的比字符串的长度小,且j的位置是空格,则j后移一位。
            i = j - 1;
        }
    }
    cout << res << endl;
    return 0;
}

局部性判断法

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    string str;
    getline(cin, str);

    string res;
    for (int i = 0; i < str.size(); i ++ )
    {
        if (str[i] != ' ') res += str[i];
        else 
        {
            res += ' ';
            int j = i;
            while (j < str.size() && str[j] == ' ') j ++; //双指针算法:j的比字符串的长度小,且j的位置是空格,则j后移一位。
            i = j - 1;
        }
    }
    cout << res << endl;
    return 0;
}


活动打卡代码 AcWing 769. 替换字符

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    char str[31];
    cin.getline(str, 31);

    char s;
    cin >> s;

    for (int i = 0; str[i]; i ++ )
        if (str[i] == s)
            str[i] = '#';

    puts(str);

    return 0;
}



#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;
char str[100010];
char cnt[26];
int main()
{
    cin >> str;
    for (int i = 0; str[i]; i ++ ) cnt[str[i] - 'a'] ++;
    /*
    循环中的条件可以为 i < strlen(str)但时间会太长,
    可以先定义int len = strlen(str),再i < len,会比前一种好。
    */
    for (int i = 0; str[i]; i ++ )
        if (cnt[str[i] - 'a'] == 1)
        {
            cout << str[i] << endl;
            return 0;
        }
    puts("no");
    return 0;
}



#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

typedef long long LL;

int main()
{
    LL a, b, res;
    cin >> a >> b;

    if (b > 0)
    {
        b = 1;
        res = b * abs(a);
    }
    else if(b < 0)
    {
        b = -1;
        res = b * abs(a);
    }
    cout << res << endl;

    return 0;
}



小白思路:

每次读取最后一个字符,如果是问号或者是空格就删除,再继续读入最后一个字符,如果是字母,再判断是不是元音,最后输出。

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int main()
{
    string s;
    getline(cin , s);

    for (int i = 0; i < 105; i ++ )
    {
        if (s.back() == '?' || s.back() == ' ') s.pop_back();
        if (s.back() >= 'A' && s.back() <= 'Z' || s.back() >= 'a' && s.back() <= 'z' )
        {
            if(s.back() == 'a' || s.back() == 'e' || s.back() == 'i' || s.back() == 'o' || s.back() == 'u' || s.back() == 'y' || s.back() == 'A' || s.back() == 'E' || s.back() == 'I' || s.back() == 'O' || s.back() == 'U' || s.back() == 'Y' ) 
            {
                cout << "YES" << endl;
                break;
            }
            else 
            {
                cout << "NO" << endl;
                break;
            }
        }
    }

    return 0;
}


新鲜事 原文

图片


活动打卡代码 AcWing 804. n 的阶乘

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

int fact(int n)
{
    int res = 1;
    for (int i = 1; i <= n; i ++ )
        res *= i;
    return res;
}

int main()
{
    int n;
    cin >> n;

    cout << fact(n) << endl;

    return 0;
}