R7-2 兰那罗们的游戏2 分数 10 作者 KADO 单位 绍兴文理学院元培学院 兰那罗们又来找旅行者玩游戏了,这次他们打算玩数学游戏。 旅行者不喜欢被三整除的数字,也不喜欢十进制里三结尾的数字。 因此旅行者写下来他喜欢的数字: 1,2,4,5,7,8,10,11,14,16,…… 请你写出第k个旅行者喜欢的数字 输入格式: 第一行包含一个整数(1 < t < 100)——测试用例的数量。然后是t个测试用例。每个测试用例包含一行包含一个整数k (1 < k <= 1000)。 输出格式: 对于每个测试用例,在单独的行中输出一个整数a——旅行者编写的序列的第k个元素。 输入样例: 在这里给出一组输入。例如: 10 1 2 3 4 5 6 7 8 9 1000 输出样例: 在这里给出相应的输出。例如: 1 2 4 5 7 8 10 11 14 1666编写一个C++程序实现该效果
时间: 2024-03-30 10:35:00 浏览: 16
```cpp
#include <iostream>
using namespace std;
bool check(int x) {
if (x % 3 == 0) return false;
while (x) {
if (x % 10 == 3) return false;
x /= 10;
}
return true;
}
int main() {
int t;
cin >> t;
while (t--) {
int k, cnt = 0;
cin >> k;
for (int i = 1; ; i++) {
if (check(i)) cnt++;
if (cnt == k) {
cout << i << endl;
break;
}
}
}
return 0;
}
```
相关问题
android 线程池
安卓中的线程池可以通过使用Java中的Executor框架来实现,它提供了一个ThreadPoolExecutor类来创建和管理线程池。可以使用ThreadPoolExecutor来创建一个线程池,设置线程池的核心线程数、最大线程数、线程空闲时间等参数,也可以设置任务队列,控制线程池的行为。
以下是一个简单的线程池示例代码:
```java
// 创建一个线程池
ThreadPoolExecutor threadPool = new ThreadPoolExecutor(
3, // 核心线程数
5, // 最大线程数
1, // 线程空闲时间
TimeUnit.SECONDS, // 时间单位
new ArrayBlockingQueue<Runnable>(10) // 任务队列
);
// 提交任务到线程池
threadPool.execute(new Runnable() {
@Override
public void run() {
// 执行任务的代码
}
});
// 关闭线程池
threadPool.shutdown();
```
在这个示例中,我们创建了一个核心线程数为3、最大线程数为5、线程空闲时间为1秒、任务队列大小为10的线程池。然后我们通过execute()方法将一个Runnable对象提交到线程池中执行,最后调用shutdown()方法关闭线程池。
线程池的使用可以提高程序的性能和稳定性,因为它可以控制线程的数量和任务的执行顺序,避免了线程过多导致的资源浪费和线程间的竞争问题。
android 创建线程
在 Android 应用程序中,创建线程的方式有以下三种:
1. 继承 Thread 类并重写 run() 方法
```
public class MyThread extends Thread {
@Override
public void run() {
// 执行耗时操作
}
}
```
2. 实现 Runnable 接口并重写 run() 方法
```
public class MyRunnable implements Runnable {
@Override
public void run() {
// 执行耗时操作
}
}
```
然后在主线程中使用 Thread 类来创建线程并启动:
```
Thread thread = new Thread(new MyRunnable());
thread.start();
```
3. 使用 AsyncTask 类(适用于轻量级的异步操作)
```
public class MyTask extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... voids) {
// 执行耗时操作
return null;
}
}
```
然后在主线程中创建并执行 AsyncTask:
```
MyTask task = new MyTask();
task.execute();
```