码蹄集 - MT1258 · 特殊整数
Posted Tisfy.
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了码蹄集 - MT1258 · 特殊整数相关的知识,希望对你有一定的参考价值。
传送门
特殊整数
时间限制:1秒
空间限制:65535 KB
题目描述
输入正整数m和n,找到包含m但不能被m整除的n位整数,统计这样的整数有多少个。本题不考虑不合理的输入或者溢出等特殊情况。
输入描述
输入整型,空格分隔。
输出描述
输出整型
样例一
输入
7 5
输出
32152
题目分析
First 骗数据知范围
这一题题目说了“本题不考虑不合理的输入或者溢出等特殊情况”,但是还是没有说n的范围。
因为 n = 9 n=9 n=9的时候也不会溢出,但是 n = 9 n=9 n=9的时候就没法暴力枚举。
因此,我首先想到的就是骗数据。
#include <bits/stdc++.h>
using namespace std;
int main()
int m, n;
cin >> m >> n;
assert(n <= 5);
return 0;
码蹄集的oj作业似乎没有错误罚时,因此可以上来就这么交一发,看反馈回来的运行结果。
如果返回的结果全部是“答案错误”,那么就说明所有的测试点的n全部 ≤ 5 \\leq 5 ≤5。反之如果返回的结果中存在“运行错误”,那么就说明有测试点的数据 n > 5 n>5 n>5。
之后再调整几次骗数据范围,就能得到所有的样例中,最大的 n n n是多少,也就知道了本题中 n n n的数据范围。
Then 愉快地暴力
既然骗到了n的范围( n ≤ 5 n\\leq5 n≤5),那么我们就可以愉快地暴力啦!
AC代码
#include <bits/stdc++.h>
using namespace std;
#define mem(a) memset(a, 0, sizeof(a))
#define dbg(x) cout << #x << " = " << x << endl
#define fi(i, l, r) for (int i = l; i < r; i++)
#define cd(a) scanf("%d", &a)
typedef long long ll;
/*
n <= 5
*/
int main()
int m, n;
cin >> m >> n;
int ans = 0;
int to = pow(10, n);
for (int i = pow(10, n - 1); i < to; i++) // 枚举[10^(n-1), 10^n)范围内的所有的数
if (i % m == 0) // 首先得是m的倍数
continue;
int t = i;
bool haveM = false;
while (t)
if (t % 10 == m) // 其次某一位的数字得等于m
haveM = true;
break;
t /= 10;
if (haveM)
ans++;
cout << ans << endl;
return 0;
点关注,不迷路
原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/124512685
以上是关于码蹄集 - MT1258 · 特殊整数的主要内容,如果未能解决你的问题,请参考以下文章