F - Palindromic Expression (abc363)

题意:给你一个整数 N 请打印一个满足以下所有条件的字符串 S 。如果不存在这样的字符串,则打印 -1。

S 是长度在 1 和 1000 之间的字符串,由字符 1、2、3、4、5、6、7、8、9 和 *(乘号)组成。S 是一个回文字符。S 的第一个字符是一位数字。将 S 作为公式求值时,其值等于 N 。

分析:可以每次递归用来搜索满足条件的数列,如果搜到回文数了,就将前面的数列一并输出,还有反转后的数列乘积表达式,如果不是回文数,继续递归分解n。在判断回文数时,不能包含0.

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll v,a[60],n;
ll f(ll x){
	ll s=0;
	while(x){
		if(x%10==0){
			return s=9e18;
		}
		s=s*10+x%10;
		x/=10;
	}
	return s;
}
void dfs(ll k,ll n){
	if(v==1)return;
	if(f(n)==n){
		a[k]=n;
		v=1;
		for(ll i=1;i<k;i++){
			printf("%lld*",a[i]);
		}
		printf("%lld",a[k]);
		for(ll i=k-1;i>=1;i--){
			printf("*%lld",f(a[i]));
		}
	}
	for(ll i=2;i*i<=n;i++){
		ll j=f(i);
		if(n%i!=0||n/i%j!=0)continue;
		a[k]=i;
		dfs(k+1,n/i/j);
	}
}
int main(){
	scanf("%lld",&n);
	dfs(1,n); 
	if(!v)cout<<"-1"<<endl;
	return 0;
}

相关推荐

  1. F - Palindromic Expression (abc363

    2024-07-22 06:36:02       17 阅读
  2. gd32F303串口接收的几种方式

    2024-07-22 06:36:02       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 06:36:02       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 06:36:02       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 06:36:02       45 阅读
  4. Python语言-面向对象

    2024-07-22 06:36:02       55 阅读

热门阅读

  1. iOS应用冷启动优化,可以做哪些事情

    2024-07-22 06:36:02       16 阅读
  2. MySQL学习之事务,锁机制

    2024-07-22 06:36:02       15 阅读
  3. 神经架构搜索:目标检测的未来

    2024-07-22 06:36:02       16 阅读
  4. Spring 系列

    2024-07-22 06:36:02       17 阅读
  5. 什么是CRISPR/Cas9?

    2024-07-22 06:36:02       14 阅读