Aprendizagem de programação C / C ++ - Semana 3 ④ Número de narcisos

Link do tópico

Descrição do título

A primavera é a estação das flores, e os narcisos são o representante mais fascinante delas. Existe um número de narcisos na matemática. Ele o define assim: "Número de narcisos" refere-se a um número de três dígitos, e a soma cúbica de seus dígitos é igual a seu Por si só, por exemplo: 153 = 1 3 + 5 3 + 3 3 .

Agora é necessário gerar o número de todos os narcisos no intervalo de m e n.

Existem
vários grupos de dados de entrada, cada grupo ocupa uma linha, incluindo dois inteiros me n (100 <= m <= n <= 999).

Saída
Para cada instância de teste, é necessário produzir todo o número de narcisos dentro de um determinado intervalo, ou seja, o número de produtos narcisos deve ser maior ou igual am e menor ou igual a n. Se houver mais de um, ele deve ser organizado em ordem crescente Saída em uma linha, separada por um espaço; se o número de narcisos não existir no intervalo fornecido, saída no.

A saída de cada instância de teste ocupa uma linha.

Amostra de entrada

100 120
300 380

Saída de amostra

no
370 371

Ideias

Apenas simule o funcionamento da pergunta. De acordo com a descrição do título, o número de narcisos se refere a um número de três dígitos e a soma dos cubos de seus dígitos é igual a si mesmo.

Código de linguagem C:

#include<stdio.h>
#include<math.h>
int check(int i)
{
    
    
	int x = i;
	int x1 = x % 10;
	x = x / 10;
	int x2 = x % 10;
	x = x / 10;
	int x3 = x % 10;
	if((x1 * x1 * x1 + x2 * x2 * x2 + x3 * x3 * x3) == i) return 1;
	else return 0;
}
int main()
{
    
    
	int m, n;
	while(~scanf("%d %d", &m, &n))
	{
    
    
		int flag = 1;
		int cnt = 0;
		for(int i = m; i <= n; i++)
		{
    
    
			if(check(i))
			{
    
    
				cnt++;
				if(flag)
				{
    
    
					flag--;
					printf("%d", i);
				}else printf(" %d", i);
			}
		}
		if(cnt == 0) printf("no\n");
		else printf("\n");
	}
	return 0;
}

Código C ++:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    
    
	ios::sync_with_stdio(false);	//加速读入
	int m, n, cnt;
	while(cin >> m >> n)
	{
    
    
		cnt = 0;
		for(int i = m; i <= n; i++)
		{
    
    
			int a = i / 100;	//百位 
			int b = i / 10 % 10;//十位 
			int c = i % 10;		//个位 
			if(i == a * a * a + b * b * b + c * c * c)
			{
    
    
				if(cnt == 0) cout << i;
				else cout << " " << i;
				cnt++;
			}
		}
		if(cnt == 0) cout << "no";
		cout << endl;
	}
	return 0;
}

A função da frase a seguir é agilizar a leitura dos dados, mesmo sem escrever.

ios::sync_with_stdio(false);

Na verdade, o número total de narcisos é quatro: 153.370.371.407.

Portanto, também podemos escrever:

#include<iostream>
using namespace std;
int main()
{
    
    
	int m, n, cnt = 0;
	while(scanf("%d%d", &m, &n) != EOF)
	{
    
    
		for(int i = m; i <= n; i++)
			if(i == 153 || i == 370 || i == 371 || i == 407)
			{
    
    
				if(cnt == 0)
				{
    
    
					printf("%d", i);
					cnt++;
				}
				else if(cnt > 0) printf(" %d", i);
			}
		cnt == 0 ? printf("no\n") : printf("\n");
		cnt = 0;
	}
	return 0;
}

Acho que você gosta

Origin blog.csdn.net/qq_44826711/article/details/112860273
Recomendado
Clasificación