2014 4e C / C ++ Groupe A Compétition provinciale de la Coupe Blue Bridge De vraies questions

Voici la rubrique thématique de la Blue Bridge Cup au fil des ans. Elle sera mise à jour et diffusera les vraies questions et réponses des années précédentes. Bienvenue amis à faire attention à moi. Vos goûts et votre attention sont la meilleure motivation pour moi! ! !
Mettez à jour une vraie question chaque jour, alors restez à l'écoute

Articles précédents et réponses détaillées de la Coupe Lanqiao


Question 1: devinez l'âge

Description du titre
Xiao Ming a emmené deux jeunes sœurs pour participer au Festival des Lanternes. Quand quelqu'un leur a demandé quel âge ils avaient, ils ont répondu avec malice: "Le produit de notre âge est 6 fois la somme de nos âges." Xiao Ming a ajouté: "Ce ne sont pas des jumeaux, et la différence d'âge ne doit pas dépasser 8 ans."
Veuillez noter: l'âge de la petite sœur de Xiao Ming. Codes de sujet d'
analyse de
sujet



Question 2: Couper les nouilles

Description du sujet:
Une nouilles ramen riches en gluten, coupées au milieu, vous pouvez obtenir 2 nouilles.
Si vous le pliez en deux et le coupez au milieu, vous pouvez obtenir 3 nouilles.
Si vous pliez deux fois en deux et coupez au milieu, vous pouvez obtenir 5 nouilles.
Alors, combien de nouilles obtiendrez-vous si vous pliez 10 fois en deux et coupez au milieu? Codes de sujet d'
analyse de
sujet



La troisième question: la formule magique

Description du titre
Une formule de multiplication composée de 4 nombres différents, leur produit est toujours composé de ces 4 nombres.
Par exemple:
210 x 6 = 1260
8 x 473 = 3784
27 x 81 = 2187
répondent tous aux exigences.
Si les formules satisfaisant à la loi commutative de multiplication sont comptées comme le même cas, alors, y compris les trois cas énumérés ci-dessus, combien de formules y a-t-il pour satisfaire les exigences? Codes de sujet d'
analyse de
sujet



La quatrième question: le calcul rapide de Shi Fengshou

Description du titre
La contribution révolutionnaire de l'algorithme de vitesse de récolte Shi Feng est la suivante: compter à partir de la position haute, prédire le report. Il n'y a pas besoin de neuf tableaux, ce qui annule complètement les calculs manuels traditionnels!
La base de base des calculs rapides est: la multiplication d'un chiffre par plusieurs chiffres.
Parmi eux, multiplier par 7 est le plus compliqué, prenez-le juste comme exemple.
Parce que 1/7 est une décimale cyclique: 0,142857 ..., si le nombre de chiffres dépasse 142857 ..., il faut saisir 1.
De même, 2/7, 3/7,… 6/7 sont également similaires cycliques décimales avec plusieurs chiffres Si elle dépasse n / 7, entrez
le programme ci-dessous n pour simuler le processus de multiplication par 7 dans l'algorithme de vitesse Shi Fengshou.
La loi de la place des unités pour multiplier par 7 est la suivante: multiplier les nombres pairs par 2, multiplier les nombres impairs par 2 et additionner 5. Tous prennent uniquement la place des unités.
La règle d' arrondi pour multiplier par 7 est:
Complet 142857 ... Entrer 1,
Complet 285714 ... Entrer 2,
Complet 428571 ... Entrer 3,
Complet 571428 ... Entrer 4,
Complet 714285 ... Entrer 5,
Complet 857142 ... Entrez 6
, veuillez analyser le déroulement du programme et remplissez la ligne Code manquant dans la partie de ligne.

//计算个位 
int ge_wei(int a)
{
    
    
	if(a % 2 == 0)
		return (a * 2) % 10;
	else
		return (a * 2 + 5) % 10;	
}

//计算进位 
int jin_wei(char* p)
{
    
    
	char* level[] = {
    
    
		"142857",
		"285714",
		"428571",
		"571428",
		"714285",
		"857142"
	};
	
	char buf[7];
	buf[6] = '\0';
	strncpy(buf,p,6);
	
	int i;
	for(i=5; i>=0; i--){
    
    
		int r = strcmp(level[i], buf);
		if(r<0) return i+1;
		while(r==0){
    
    
			p += 6;
			strncpy(buf,p,6);
			r = strcmp(level[i], buf);
			if(r<0) return i+1;
			______________________________;  //填空
		}
	}
	
	return 0;
}

//多位数乘以7
void f(char* s) 
{
    
    
	int head = jin_wei(s);
	if(head > 0) printf("%d", head);
	
	char* p = s;
	while(*p){
    
    
		int a = (*p-'0');
		int x = (ge_wei(a) + jin_wei(p+1)) % 10;
		printf("%d",x);
		p++;
	}
	
	printf("\n");
}

int main()
{
    
    
	f("428571428571");
	f("34553834937543");		
	return 0;
}

Codes de sujet d' analyse de
sujet



Question 5: Championnat

Description du titre
Si vous souhaitez sélectionner les première et deuxième plus grandes données parmi n données (nécessite l'emplacement et la valeur des données de sortie), quelle méthode est utilisée pour comparer le moins de fois? Nous pouvons nous inspirer des championnats sportifs.

Comme le montre la figure [1.png], dans un tournoi de 8 joueurs, commencez par attraper et comparer les uns les autres et en éliminer la moitié. Les gagnants ont concouru par paires ... jusqu'à ce que la première place soit décidée.

Une fois que la première place est sortie, il suffit de reconstituer la position marquée en jaune.

Le code suivant implémente cet algorithme (en supposant qu'il n'y a pas de valeurs identiques dans les données).

Le code doit utiliser un tableau pour représenter l'arborescence de la figure (notez qu'il s'agit d'un arbre binaire complet et doit être rempli). Il ne stocke pas les données proprement dites, mais stocke l'indice des données.

Après la sortie des premières données, leur emplacement est marqué comme -1

//重新决出k号位置,v为已输出值 
void pk(int* a, int* b, int n, int k, int v)
{
    
    
	int k1 = k*2 + 1;
	int k2 = k1 + 1;
	
	if(k1>=n || k2>=n){
    
    
		b[k] = -1;
		return;
	}
	
	if(b[k1]==v) 
		pk(a,b,n,k1,v);
	else
		pk(a,b,n,k2,v);
	
	//重新比较
	if(b[k1]<0){
    
    
		if(b[k2]>=0)
			b[k] = b[k2]; 
		else
			b[k] = -1;
		return;
	}
	
	if(b[k2]<0){
    
    
		if(b[k1]>=0)
			b[k] = b[k1]; 
		else
			b[k] = -1;
		return;
	}
	
	if(______________________) //填空
		b[k] = b[k1];
	else
		b[k] = b[k2];
}

//对a中数据,输出最大,次大元素位置和值 
void f(int* a, int len)
{
    
    
	int n = 1;
	while(n<len) n *= 2;
	
	int* b = (int*)malloc(sizeof(int*) * (2*n-1));
	int i;
	for(i=0; i<n; i++){
    
     
		if(i<len) 
			b[n-1+i] = i;
		else
			b[n-1+i] = -1;
	}
	
	//从最后一个向前处理
	for(i=2*n-1-1; i>0; i-=2){
    
    
		if(b[i]<0){
    
    
			if(b[i-1]>=0)
				b[(i-1)/2] = b[i-1]; 
			else
				b[(i-1)/2] = -1;
		}
		else{
    
    
			if(a[b[i]]>a[b[i-1]])
				b[(i-1)/2] = b[i];
			else
				b[(i-1)/2] = b[i-1];
		}
	}
	
	//输出树根
	printf("%d : %d\n", b[0], a[b[0]]);
	
	//值等于根元素的需要重新pk
	pk(a,b,2*n-1,0,b[0]);
	
	//再次输出树根
	printf("%d : %d\n", b[0], a[b[0]]);
	
	free(b);
}


int main()
{
    
    
	int a[] = {
    
    54,55,18,16,122,17,30,9,58};
	f(a,9);	
}

Insérez la description de l'image ici

Codes de sujet d' analyse de
sujet



Sixième question: séquence de poker

Description du titre
AA 2 2 3 3 4 4, un total de 4 paires de cartes à jouer. Veuillez les aligner.
Exigences: Il y a 1 carte entre deux as, 2 cartes entre deux 2, 3 cartes entre deux 3 et 4 cartes entre deux 4.
Veuillez remplir l'ordre lexicographique le plus bas parmi toutes les permutations qui répondent aux exigences.
Par exemple: 22AA3344 est lexicographiquement plus petit que A2A23344. Bien sûr, ils ne sont pas la réponse aux exigences.
Veuillez soumettre vos réponses via votre navigateur. "A" ne doit pas utiliser un a minuscule, et ne doit pas utiliser "1" à la place. Ne laissez pas d'espaces entre les caractères.
Analyse thématique

Code du sujet



Question 7: Les fourmis attrapent un rhume

Description du titre
Il y a des fourmis sur une perche droite mince de 100 cm de long. Certaines de leurs têtes sont tournées vers la gauche et d'autres vers la droite.

每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。

当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。

这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。

请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。

【Format des données】

第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数。

接着的一行是n个用空格分开的整数 Xi (-100 < Xi < 100), Xi的绝对值,表示蚂蚁离开杆子左边端点的距离。正值表示头朝右,负值表示头朝左,数据中不会出现0值,也不会出现两只蚂蚁占用同一位置。其中,第一个数据代表的蚂蚁感冒了。

要求输出1个整数,表示最后感冒蚂蚁的数目。

Par exemple, entrez:
3
5-2 8 Le
programme doit produire:
1

Pour un autre exemple, entrée:
5
-10 8 -20 12 25 Le
programme de sortie devrait:
3

Accord de ressources:
consommation de mémoire maximale <256 Mo de
consommation CPU <1000 ms

Codes de sujet d' analyse de
sujet



Question 8: Prendre un trésor du palais souterrain

Description du titre
King X possède un trésor de palais souterrains. Est une matrice de grilles nxm. Mettez un bébé dans chaque grille. Chaque bébé est apposé avec une étiquette de valeur.
L'entrée du palais souterrain se trouve dans le coin supérieur gauche et la sortie est dans le coin inférieur droit.
Xiao Ming a été emmené à l'entrée du palais souterrain et le roi lui a demandé de marcher vers la droite ou vers le bas.
En marchant à travers une certaine grille, si la valeur du trésor dans cette grille est supérieure à la valeur de n'importe quel trésor entre les mains de Xiao Ming, Xiao Ming peut le ramasser (bien sûr, vous n'avez pas besoin de le prendre).
Lorsque Xiao Ming se dirige vers la sortie, si les trésors dans sa main se trouvent être k pièces, ces trésors peuvent être donnés à Xiao Ming.
Veuillez aider Xiaoming à calculer le nombre de plans d'action différents dont il dispose pour obtenir ces k trésors dans une situation donnée.
[Format de données]
Entrez 3 entiers dans une ligne, séparés par des espaces: nmk (1 <= n, m <= 50, 1 <= k <= 12)
Ensuite, il y a n lignes de données, chaque ligne a m entiers Ci (0 <= Ci <= 12) représente la valeur du trésor sur cette grille. Il est
nécessaire de sortir un entier, ce qui signifie que le nombre de plans d'action pour k trésors est pris. Ce nombre peut être très grand et afficher le résultat du modulo 1000000007.

Par exemple, entrez:
2 2 2
1 2
2 1 Le
programme doit produire:
2

Pour un autre exemple, entrez:
2 3 2
1 2 3
2 1 5 Le
programme doit afficher:
14

Accord de ressources:
consommation maximale de mémoire <256 Mo de
consommation CPU <1000 ms code de
question d'analyse de
question



Question 9: Fibonacci

Titre Description La
séquence de Fibonacci est très familière à tout le monde. Sa définition est:
f (x) = 1… (x = 1,2)
f (x) = f (x-1) + f (x-2)… (x> 2)
Pour un entier donné n et m, on veut trouver:
f (1) + f (2) +… + la valeur de f (n). Mais cette valeur peut être très grande, nous la prenons donc modulo f (m).
Voir [Figure 1.png] pour la formule,
mais ce nombre est toujours très grand, nous devons donc à nouveau modulo p.
[Format de données]
Entrée sous forme de ligne d'entiers séparés par des espaces nmp (0 <n, m, p <10 ^ 18),
sortie sous forme de 1 entier

Par exemple, si vous entrez:
2 3 5, le
programme doit afficher:
0

Pour un autre exemple, saisissez:
15 11 29 Le
programme doit générer:
25

Accord de ressources:
consommation de mémoire maximale <256 Mo de
consommation CPU <1000 ms
Insérez la description de l'image ici

Codes de sujet d' analyse de
sujet



Question 10: Série de fluctuation

Description du titre
Observez cette séquence:
1 3 0 2 -1 1 -2…
Le dernier élément de cette séquence augmente toujours de 2 ou diminue de 3 par rapport à l'élément précédent.
Dongdong est très curieux à propos de ce genre de séquence, il veut savoir combien de suites entières sont possibles de longueur n et s et ce dernier terme augmente toujours a ou diminue b par rapport au terme précédent?
[Format des données]
La première ligne d'entrée contient quatre entiers nsab, la signification est telle que mentionnée ci-dessus.
Sortez une ligne, contenant un entier, indiquant le nombre de solutions qui remplissent les conditions. Étant donné que ce nombre est très élevé, veuillez indiquer le reste du nombre de plans divisé par 100000007.
Par exemple, entrez:
4 10 2 3 Le
programme doit afficher:
2
[Description de l'échantillon]
Ces deux nombres sont respectivement 2 4 1 3 et 7 4 1 -2.
[Échelle des données et convention]
Pour 10% des données, 1 <= n <= 5, 0 <= s <= 5, 1 <= a, b <= 5;
pour 30% des données, 1 <= n <= 30, 0 <= s <= 30
, 1 <= a, b <= 30; pour 50% des données, 1 <= n <= 50, 0 <= s <= 50, 1 <= a, b < = 50;
Pour 70% des données, 1 <= n <= 100, 0 <= s <= 500
, 1 <= a, b <= 50; Pour 100% des données, 1 <= n <= 1000, - 1 000 000 000 <= s <= 1 000 000 000, 1 <= a, b <= 1 000 000.
Contrat de ressource:
consommation de mémoire maximale <


Code du sujet



Je suppose que tu aimes

Origine blog.csdn.net/kiwi_berrys/article/details/111462407
conseillé
Classement