Heim > Backend-Entwicklung > C++ > Hauptteil

Übersetzen Sie Folgendes ins Chinesische: C++ Teilen Sie eine Zahl in zwei teilbare Teile

PHPz
Freigeben: 2023-08-30 17:33:03
nach vorne
1036 Leute haben es durchsucht

将以下内容翻译为中文:C++ 将一个数分成两个可被整除的部分

In dieser Frage erhalten wir eine Zeichenfolge, die als Zahl interpretiert werden kann. Jetzt müssen wir diese Zeichenfolge in zwei Teile teilen, sodass der erste Teil durch A und der zweite Teil durch B teilbar ist (vorausgesetzt, wir haben zwei ganze Zahlen). Zum Beispiel -

Input : str = "123", a = 12, b = 3
Output : YES
12 3
"12" is divisible by a and "3" is
divisible by b.

Input : str = "1200", a = 4, b = 3
Output : YES
12 00

Input : str = "125", a = 12, b = 3
Output : NO
Nach dem Login kopieren

Bei diesem Problem werden wir nun einige Vorberechnungen durchführen, um unser Programm schneller zu machen, damit es dann unter höheren Einschränkungen arbeiten kann.

Methode zum Finden der Lösung

Bei dieser Methode führen wir zwei Schleifen in der Zeichenfolge aus, die erste Schleife vom Anfang bis zum Ende und die zweite Schleife vom Ende bis zum Anfang. Nun nehmen wir an jedem Punkt Modulo die ganze Zahl, die durch an in der ersten Schleife und b in der zweiten Schleife gebildet wird, und können dann die Antwort finden.

Beispiel

#include <bits/stdc++.h>
using namespace std;
void divisionOfString(string &str, int a, int b){
    int n = str.length();
    vector<int> mod_a(n+1, 0); //
    mod_a[0] = (str[0] - &#39;0&#39;)%a;
    for (int i=1; i<n; i++) // front loop for calculating the mod of integer with a
        mod_a[i] = ((mod_a[i-1]*10)%a + (str[i]-&#39;0&#39;))%a;
    vector<int> mod_b(n+1, 0);
    mod_b[n-1] = (str[n-1] - &#39;0&#39;)%b;
    int power10 = 10; // as we have assigned answer to last index
    for (int i= n-2; i>=0; i--){ // end loop for calculating the mod of integer with b
        mod_b[i] = (mod_b[i+1] + (str[i]-&#39;0&#39;)*power10)%b;
        power10 = (power10 * 10) % b;
    }
    for (int i=0; i<n-1; i++){ // finding the division point
        if (mod_a[i] != 0) // we can skip through all the positions where mod_a is not zero
            continue;
        if (mod_b[i+1] == 0){ // now if the next index of mod_b is also zero so that is our division point
            cout << "YES\n";
            /*******Printing the partitions formed**********/
            for (int k=0; k<=i; k++)
               cout << str[k];
            cout << " ";
            for (int k=i+1; k < n; k++)
               cout << str[k];
            return;
        }
    }
    cout << "NO\n"; // else we print NO
}
// Driver code
int main(){
    string str = "123"; // given string
    int a = 12, b = 3;
    divisionOfString(str, a, b);
    return 0;
}
Nach dem Login kopieren

Ausgabe

YES
12 3
Nach dem Login kopieren

Erklärung des obigen Codes

Bei dieser Methode berechnen wir nun den Rest der durch jede Division gebildeten Zahl. Unsere erste Zahl sollte durch a teilbar sein, also führen wir eine Vorwärtsschleife durch und speichern den Mod dieser Zahl mit a. Für b führen wir eine Rückwärtsschleife aus und speichern den Mod jetzt, da wir wissen, dass dies unsere Antwort sein wird, wenn der Mod von a an einer beliebigen Position Null ist und der Mod von b am nächsten Index Null ist .

Fazit

In diesem Tutorial haben wir das Problem gelöst, eine Zahl in zwei teilbare Teile zu teilen. Wir haben auch das C++-Programm für dieses Problem und die vollständige (generische) Methode zu seiner Lösung gelernt. Wir können das gleiche Programm in anderen Sprachen wie C, Java, Python und anderen schreiben. Wir hoffen, dass Sie dieses Tutorial hilfreich fanden.

Das obige ist der detaillierte Inhalt vonÜbersetzen Sie Folgendes ins Chinesische: C++ Teilen Sie eine Zahl in zwei teilbare Teile. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!