PE003 Largest palindrome product

从999999向下走,判断1:有没有3位数3位数的因子2:是不是回文

#include <iostream>
#include <cstdio>
#include <cstring>
#include <map>
#include <cmath>
#include <algorithm>
#define inf 0x3f3f3f3f
#define sd(a) scanf("%d",&a)
#define mem0(a) memset(a,0,sizeof(a))
typedef long long ll;
const int mod = 998244353;
const int maxn = 1e7+10;
int a[maxn];
using namespace std;

bool isPrime(int x)
{
    
    
	for(int i=2;i*i<=x;i++)
	{
    
    
		if(x%i==0)
			return false;
	}
	return true;
}
bool MaxFactor3(int x)
{
    
    
    int up = sqrt(x);
    //cout<<up<<endl;
    int Max = -1;
    for(int i = 100;i <= 999;i++)
        if(x%i == 0)
            if(x/i<=999&&x/i>=100)return true;
    return false;
}
bool ispalindrome(int x)
{
    
    
    int cur = 0;
    while(x!=0)
    {
    
    
        a[cur++] = x%10;
        x/=10;
    }
    if(cur%2 == 0)
        for(int i = 0;i < cur/2;i++)
        if(a[i]!=a[cur-i-1])return false;
    else
        for(int i = 0;i < cur/2+1;i++)
        if(a[i]!=a[cur-i-1])return false;
    return true;
}
int main()
{
    
    
    int num = 999*999;
    for(int i = num;i >= 100*100;i--)
    {
    
    
        if(ispalindrome(i)&&MaxFactor3(i))
            {
    
    
            cout<<i<<endl;
            cout<<MaxFactor3(i)<<endl;
            break;
            }
    }
    cout<<ispalindrome(num)<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_42937838/article/details/105099610