Solución a un problema cambiando el número P2821 []

prefacio

Esta pregunta realmente es una buena pregunta.

texto

análisis

En primer lugar, pensamos, una serie de sub cambiando lo que se deben cumplir las condiciones.

No puede exceder el máximo factor de calidad 9 9 base medio.

A continuación, encontrará k k número mínimo de cambios en los padres k k de 9 9 a 2 2 a romper k k , a continuación, guardarlo, y finalmente la salida contra.

¿Por qué?

  1. para k k el número mínimo de cambios de los padres, nuestra primera 1 1 Ge como sea posible para asegurar que el número de bits menos.

  2. Bajo la premisa de dígitos como mínimo posible, queremos que el número tan pequeño como sea posible,

#include <bits/stdc++.h>
using namespace std;
int x=9,a[1010],len,l=1;
vector<int>v;
int main(){
	char ch=getchar();
	for(;!isdigit(ch);ch=getchar());
	for(;isdigit(ch);ch=getchar())a[++len]=ch-'0';//读入
	while(x>=2){
		int y=0;
		for(int i=1;i<=len;i++){
			y=y*10+a[i];
			y%=x;
		}
		if(y)x--;//如果不能整除
		else{
			v.push_back(x);//存入
			for(int i=1;i<=len;i++){
				y=y*10+a[i];
				a[i]=y/x;y%=x;//除
			}if(a[l]==0)l++;
		}
	}if(len!=l)puts("There is no such number!");
	else for(int i=v.size()-1;i>=0;i--)cout<<v[i];//反着输出
	return 0;
}

posdata

Si tiene alguna pregunta, puede escribirlo en la sección de comentarios, por lo que una solución más completa de este problema.

Publicado 41 artículos originales · ganado elogios 61 · vistas 642

Supongo que te gusta

Origin blog.csdn.net/qq_46230164/article/details/105313395
Recomendado
Clasificación