J'ai rencontré une déesse et j'ai pensé que je pouvais gagner son cœur avec mon apparence, alors j'ai pris l'initiative de demander un compte QQ à la déesse. De façon inattendue, la stratégie beauté a échoué. elle était en réalité une programmeuse. Un concours entre les deux, le sujet est le suivant :
La déesse a donné une chaîne de nombres (pas de nombres QQ). Le numéro QQ peut être trouvé selon les règles suivantes : supprimez d'abord le premier. nombre, puis mettez le deuxième nombre. Allez à la fin de cette chaîne de nombres, supprimez le troisième nombre, et mettez le quatrième nombre à la fin de cette chaîne de nombres... Dans cette boucle, jusqu'à ce qu'il reste le dernier nombre, supprimez le dernier numéro et supprimez-le comme vous venez de le faire. Dans l'ordre, connectez ces numéros ensemble pour obtenir le numéro QQ de la déesse.
Ça y est, la déesse a donné une chaîne de nombres 631758924. Ce que nous devons faire maintenant, c'est découvrir le numéro QQ de la déesse à partir de ce numéro. tels que Utilisez 9 cartes pour écrire ces 9 nombres respectivement et simulez le processus de la question. Vous pouvez les calculer, ou vous pouvez utiliser un stylo pour les calculer un par un ~~~~
Ces méthodes sont. trop faible et ne peut pas être affiché. Quant aux capacités d'un programmeur, ce serait plus cool d'écrire un programme (en fait, je pense que si je rencontre une déesse posant une telle question la prochaine fois, le programme sera très pratique, haha~~~)
Méthode de solution
La première méthode consiste à utiliser des méthodes mathématiques et à cycler les opérations suivantes selon les règles de la question : arrondi => reste => reste * 10 + arrondi. . . . . Les objets d'arrondi du reste sont tous des multiples de 10, selon le nombre de chiffres. Après chaque arrondi, il y a un chiffre, et la boucle se poursuit jusqu'à ce que le nombre soit égal à 0.
$raw_num = 631758924;
$num = 0
$devisor = 1
pendant que ($devisor
{
$devisor *= 10; //Obtient le plus petit entier multiple de 10 de raw_num
}
while ($raw_num > 0) {
$devisor /= 10;
$next = floor($raw_num / $devisor); / Obtenez le numéro suivant
$num = $num*10 + $next; //Calculez le numéro QQ du "produit semi-fini"
$raw_num = $raw_num % $devisor
$last = floor($raw_num * 10 / $devisor); //Déplacez les nombres et collez le dernier numéro QQ
$pre = $raw_num % (ceil ($devisor / 10) );
$raw_num = $pre * 10 + $last;
echo "Félicitations, vous avez réussi obtenu votre numéro QQ : { $num}"; //Félicitations, vous avez réussi à obtenir le numéro QQ : 615947283
Utilisez le FIFO de la file d'attente pour obtenir le numéro QQ. Selon les caractéristiques de la question, vous peut simplement utiliser la file d'attente pour le traiter. La file d'attente est simple, pratique et mieux comprise.
#include
struct queue {
int *data
int head
int tail;
};
int main()
{
int num, i
printf("Veuillez envoyer le code à être déchiffré longueur du numéro QQ : ");
scanf("%d", &num);
struct queue q;
q.data = ( int *)malloc(sizeof(int)*(num*2-1)); //La longueur totale requise du tableau est num*2-1
q.head = 0; 🎜> q.tail = 0;
for(i=1;i
{ , &q.data[q.tail]) ;
q.tail++;
}
printf("Félicitations, vous avez obtenu le numéro QQ : "
while(q.head
{
printf("%d", q.data[q.head] ); ;
q.data[q.tail] = q.data[q.head++;
q.head++;
return 0;
}
#Ce qui suit est une expérience
Veuillez entrer la longueur du numéro QQ à déchiffré : 9
Veuillez saisir la longueur du numéro QQ à déchiffrer : 9
6
3
1
7
5
8
9
2
4
Félicitations, vous avez obtenu avec succès le numéro QQ : 615947283. Veuillez appuyer sur n'importe quelle touche pour continuer... Maintenant, mon statut dans le cœur de la déesse s'est grandement amélioré.
Et si vous avez appris cette méthode ?