原始问题是这样的,我们必须找到小于给定数量(由用户给出)的最小回文,其必须是两个三位数的倍数。我得到了回文部分,但我被困在“多个”部分。我能够理清素数,但无法弄清楚 还要别的吗。 编辑: - 似乎我在我的问题中不清楚,所以这里的一个例子101101是回文,也是两个三位数(143和107)的产品,这也是这种类型的最小回文 这是我的源代码
#include <iostream>
using namespace std;
int main(){int t ;
cin >> t ;
for (int a0=0 ; a0<t ; a0++){int n ;
cin >> n ;
while(n>101101){
int num , rev = 0 , dig ;
num = n ;
while(num != 0 ){
dig = num%10;
rev= (rev*10) + dig ;
num = num /10;
}
if (rev==n ){
cout << n ;
break ;
}
else {
n= n -1;
}}}}
答案 0 :(得分:0)
这里的代码有一个函数,它将检查回文数是否是两个三位数的乘积。
#include <iostream>
using namespace std;
bool checkMultiple(int num)
{
for(int i=100 ; i<=999; i++)
{
for(int j=100 ; j<=999; j++)
{
if((i*j) == num)
{
// cout<<i<<"*"<<j<<"="<<num<<endl;
return true;
}
}
}
return false;
}
int main()
{
int t ;
cin >> t ;
for (int a0=0 ; a0<t ; a0++)
{
int n ;
cin >> n ;
while(n>101101)
{
int num , rev = 0 , dig ;
num = n ;
while(num != 0 )
{
dig = num%10;
rev= (rev*10) + dig ;
num = num /10;
}
if (rev==n )
{
bool palindrome = checkMultiple(n);
if(palindrome)
{
cout << n ;
break ;
}
}
else
{
n= n -1;
}
}
}
system("pause");
return 0;
}
答案 1 :(得分:0)
由于您已经找到了回文部分,请尝试使用多个部分:
1.check if it is a multiple of a 3 digit num (% operator)
2.if you get one (call n1) ,run the loop again for another similar 3 digit num other than n1, then you've got your palindrome.
3.then run another outtermost loop which executes till you get your result, checking each possible palin as mentioned above.