我需要找到任意数字> 0,其中n位数(< = 10)可被数字m整除(< = 10)。
这是我试过的:
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, t, k, r=1;
cin>>n>>t;
k=n;
while(k--)
r*=10; // i am making 10^n
r/=10; // a 0 was in plus
现在我从10 ^ n到10 ^ n + 10搜索一个可被t整除的数字,知道我有t&lt; = 10,我应该有一个可被它整除的数字。
for(int i=r; i<=r+10; ++i)
if(i%t==0){
cout<<i;
return 0;
}
}
我只有这个例子:
3 2
答案是712,但我可以输出任何内容。
对于输入我的代码是错误的,我不知道为什么。
答案 0 :(得分:1)
如果您需要知道有多少N位数可以除以M,那么使用公式可以相当容易地完成。让我们说我们想要知道所有可被17整除的5位数字。我们所做的是找到最小的5位数,可以除以17.所以如果我们这样做
10000 % 17
当我们这样做时,我们会4
10000 - 4 + 17
我们得到10013这是可以除以17的第一个5位数。现在我们需要知道在[10013,99999]范围内有多少17个多数。我们需要找到最大的5位整数,我们可以用简单的整数除法和乘法来得到它
99999 / 17 * 17 = 99994
获取我们拍摄的倍数
(max - min ) / 17
(99994 - 10013) / 17
89981 / 17 = 5293
答案 1 :(得分:0)
<强>已更新强> 这是你需要的吗?
第一个数字n,是位数。 第二个数字m,是分隔符。
#include <iostream>
#include <string>
using namespace std;
int m, n;
bool searchDivisibleNumbers(int n, int m);
int main()
{
cin >> n >> m;
while (searchDivisibleNumbers(n,m))
return 0;
}
bool searchDivisibleNumbers(int n, int m)
{
int digits = pow(10, n-1); //huge number of n digits
while (digits != 0){
if (digits % m == 0){
cout << digits << " is divisible by " << m << endl;
}
digits--;
}
return true;
}
输入:n = 3(3位)m = 17 输出:
3 17
85 is divisible by 17
68 is divisible by 17
51 is divisible by 17
34 is divisible by 17
17 is divisible by 17
Press any key to continue . . .
答案 2 :(得分:0)
这是一个适合您的计划:
int main(void)
{
int i = 0;
cout << "Enter number: ";
cin >> i;
int m = 0;
cout << "Enter divisor: ";
cin >> m;
if (m == 0)
{
cerr << "Can't divide by zero, aborting.\n";
return EXIT_FAILURE;
}
cout << "Your number "
<< i;
if ((i % m) == 0)
{
cout << " is divisible by "
<< m
<< "\n";
}
else
{
cout << "not divisible by " << m << "\n";
}
return EXIT_SUCCESS;
}
您应该能够输入一个10位数字和一个除数m,并查看结果。
答案 3 :(得分:0)
这个问题有两种可能性。 1.如果M(<10)那么答案将是“MMMMMM ......”类型,最多为N位。 2.如果M(== 10)那么如果N == 1那么就没有可能的数字,因为没有一个数字可以被10整除,但是对于N> 1,答案将是“11111 ..”类型,直到N-1数字后跟'0'。