题目大意可以概括为求从一开始第个既不是三的倍数又不是五的倍数的数
如果没有思路。列几个数看看:
1, 2, 4, 7, 8, 11, 13, 14, 16, 17, 19, 22, 23, 26, 28, 29, ……
因为三乘五等于十五,所以猜测模15的余数可能有规律。列一下:
1, 2, 4, 7, 8, 11, 13, 14, 1, 2, 4, 7, 8, 11, 13, 14, ……
于是很明显地发现存在8位的循环节。之后处理就是一个简单问题了,详见程序:
#include <bits/stdc++.h>
using namespace std;
int a[8] = { 14, 1, 2, 4, 7, 8, 11, 13 };
int main() {
int n;
cin >> n;
int d = n / 8;
int ans = d * 15;
if (n % 8 != 0)
ans += a[n % 8];
else
--ans;
cout << ans << endl;
return 0;
}