B3850 [GESP202306 四级] 幸运数 求调

题目总版

__MZ__ @ 2024-11-27 19:41:01

B3850 [GESP202306 四级] 幸运数 20分,求调

传送门

#include <iostream>
#include <vector>
using namespace std;

// 判断是否为幸运数的函数
bool isLuckyNumber(long long num) {
    long long original = num;
    long long transformed = 0;
    long long placeValue = 1; // 用于恢复每一位的位置

    while (num > 0) {
        int digit = num % 10;  // 获取当前数字的最后一位
        num /= 10; // 去掉最后一位

        // 根据题目要求转换每一位数字
        if (digit < 7) {
            digit += 7;
        } else if (digit > 9) {
            digit -= 9;
        }

        // 将转换后的数字加到新数的相应位置上
        transformed += digit * placeValue;
        placeValue *= 10; // 移动到下一位
    }

    return original == transformed;
}

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

    vector<long long> numbers(N);
    for (int i = 0; i < N; i++) {
        cin >> numbers[i];
    }

    for (int i = 0; i < N; i++) {
        if (isLuckyNumber(numbers[i])) {
            cout << "T" << endl;
        } else {
            cout << "F" << endl;
        }
    }

    return 0;
}

by ddlove2014 @ 2024-11-27 19:58:44

//代码送你了
#include <bits/stdc++.h>
#define int long long
using namespace std;
int change[15] = {0, 7, 5, 3, 1, 8, 6, 4, 2, 9}; //转换后的数字
bool isluck(int x) //是否为幸运数字
{
    int ans = 0;
    int p = 1;
    while(x)
    {
        if(p) ans += change[x % 10];
        else ans += x % 10;
        x /= 10;
        p ^= 1; 
    }
    return (ans % 8 == 0? 1: 0);
}
signed main()
{
    int t;
    cin >> t;
    while(t--)
    {
        int x;
        cin >> x;
        cout << (isluck(x)? 'T': 'F') << endl;
    }
    return 0;
}

by __MZ__ @ 2024-11-28 18:15:49

@ddlove2014 谢谢


|