生命不息,奋斗不止

题解 CF1560A【Dislike of Threes】

2021-08-19 08:06:42


一句话题意

有一个数列,不存在可被3整除或以十进制表示的数字3结尾的整数,求数列中第 $k$ 个数。

思路简述

本题直接模拟即可。从1开始枚举数列的发展。如果下一个是三的倍数或结尾是3,我们就不记录下一位在数列中,否则我们就用计数器记录,当计数器与 $k$ 相等时就输出当前数字。

代码

#include<bits/stdc++.h>
#define debug cout << "Helloworld" << endl
using namespace std;

int a[10005];

int main() {
    int n;
    cin >> n;
    for(int i = 1; i <= n; i++) {
        int s, cnt = 1, r = 1; //cnt:数列中第几个,r:第cnt个数
        cin >> s;
        while(cnt < s) {
            if((r + 1) % 3 == 0 || (r + 1) % 10 == 3) { //判断下一个是否符合在数列中的条件
                r++; //不符合,数组加1
            } else {
                r++; 
                cnt++;//符合条件,全部加1
            }
        } 
        cout << r << endl; //输出解
    }
    return 0;
}