#33203: #4 line39 求解


laiwei9102@gmail.com (賴冠瑋)

學校 : 國立臺中第一高級中學
編號 : 192366
來源 : [36.233.130.239]
最後登入時間 :
2022-08-22 11:02:54
e294. APCS 類似題 - 小崴的新發現 -- 小崴系列APCS | From: [114.33.29.134] | 發表日期 : 2022-12-09 20:45

如題

 
#33205: Re: #4 line39 求解


laiwei9102@gmail.com (賴冠瑋)

學校 : 國立臺中第一高級中學
編號 : 192366
來源 : [36.233.130.239]
最後登入時間 :
2022-08-22 11:02:54
e294. APCS 類似題 - 小崴的新發現 -- 小崴系列APCS | From: [114.33.29.134] | 發表日期 : 2022-12-09 20:54

如題

t/6g4a83
#include <bits/stdc++.h>
using namespace std;

int main()
{
    string str;
    while (cin >> str)
    {
        long double a_a = 0, b_b = 0, i_str = 0;
        long long int minum;
        double a[str.size()], b[str.size()];
        for (int i = 0; i < str.size(); i++)
        {
            if ((str[i] - '0') % 2 != 1)
            {
                a[i] = str[i] - '0' + 1;
                if (str[i] == '0')
                {
                    if (b[i - 1] == 1 || b[i - 1] == 3 || b[i - 1] == 5 || b[i - 1] == 7 || b[i - 1] == 9)
                    {
                        if (b[i - 1] == 1)
                        {
                            b[i - 1] -= 1;
                        }
                        else
                        {
                            b[i - 1] -= 2;
                        }
                    }
                    else
                    {
                        b[i - 1] -= 1;
                    }
                    b[i] = 9;
                }
                else
                {
                    b[i] = str[i] - '0' - 1;
                }
                for (int j = i + 1; j < str.size(); j++)
                {
                    a[j] = 1;
                    b[j] = 9;
                }
                break;
            }
            else
            {
                a[i] = str[i] - '0';
                b[i] = str[i] - '0';
            }
        }
        for (int i = str.size(); i > 0 ; i--)
        {
            a_a += a[str.size() - i] * pow(10, i - 1);
            b_b += b[str.size() - i] * pow(10, i - 1);
            i_str += (str[str.size() - i] - '0') * pow(10, i - 1);
        }
        minum = (long long int)(min(a_a - i_str, i_str - b_b) + 0.5 - (min(a_a - i_str, i_str - b_b) < 0));
        cout << minum << endl;
    }

    return 0;
}



 
#33206: Re: #4 line39 求解


laiwei9102@gmail.com (賴冠瑋)

學校 : 國立臺中第一高級中學
編號 : 192366
來源 : [36.233.130.239]
最後登入時間 :
2022-08-22 11:02:54
e294. APCS 類似題 - 小崴的新發現 -- 小崴系列APCS | From: [114.33.29.134] | 發表日期 : 2022-12-10 09:24

如題

t/6g4a83
#include
using namespace std;

int main()
{
    string str;
    while (cin >> str)
    {
        long double a_a = 0, b_b = 0, i_str = 0;
        long long int minum;
        double a[str.size()], b[str.size()];
        for (int i = 0; i < str.size(); i++)
        {
            if ((str[i] - '0') % 2 != 1)
            {
                a[i] = str[i] - '0' + 1;
                if (str[i] == '0')
                {
                    if (b[i - 1] == 1 || b[i - 1] == 3 || b[i - 1] == 5 || b[i - 1] == 7 || b[i - 1] == 9)
                    {
                        if (b[i - 1] == 1)
                        {
                            b[i - 1] -= 1;
                        }
                        else
                        {
                            b[i - 1] -= 2;
                        }
                    }
                    else
                    {
                        b[i - 1] -= 1;
                    }
                    b[i] = 9;
                }
                else
                {
                    b[i] = str[i] - '0' - 1;
                }
                for (int j = i + 1; j < str.size(); j++)
                {
                    a[j] = 1;
                    b[j] = 9;
                }
                break;
            }
            else
            {
                a[i] = str[i] - '0';
                b[i] = str[i] - '0';
            }
        }
        for (int i = str.size(); i > 0 ; i--)
        {
            a_a += a[str.size() - i] * pow(10, i - 1);
            b_b += b[str.size() - i] * pow(10, i - 1);
            i_str += (str[str.size() - i] - '0') * pow(10, i - 1);
        }
        minum = (long long int)(min(a_a - i_str, i_str - b_b) + 0.5 - (min(a_a - i_str, i_str - b_b) < 0));
        cout << minum << endl;
    }

    return 0;
}


已解決



 
ZeroJudge Forum