Fragen zum täglichen Zähneputzen 39

Ressourcenlimit
Speicherlimit: 256,0 MB C/C++-Zeitlimit: 1,0 s Java-Zeitlimit: 3,0 s Python-Zeitlimit: 5,0 s
Problembeschreibung
  Gegeben N, A0, B0, finden Sie alle Paare (A, B), so dass wenn A0 * x + B0 * y durch N teilbar ist, dann ist auch A * x + B * y durch N teilbar.
Eingabeformat
  Geben Sie nacheinander drei Ganzzahlen N, A0, B0 ein, was wie im Titel beschrieben bedeutet.
Ausgabeformat
  Die erste Zeile ist eine Ganzzahl m, die Anzahl aller Paare.
  In den nächsten m Zeilen hat jede Zeile zwei ganze Zahlen A, B (beide Zahlen liegen zwischen [0, n)), die Bedeutung ist wie im Titel beschrieben. Sortieren Sie die Ausgabe nach A von klein nach groß. Wenn Sie auf das gleiche Zahlenpaar von A stoßen, sortieren Sie die Ausgabe nach B von klein nach groß und geben Sie sie aus.
Beispieleingabe
3
1 2
Beispielausgabe
3
0 0
1 2
2 1
Datengröße und Konvention
  0<N≤100000, 0≤A, B<N.

Antwort:

#include<iostream>
using namespace std;
typedef long long ll;
ll n,m,a0,b0,num=0;
int main(){
    
    
    pair<int,int> result[10001];
    int n,a0,b0;
    cin >> n>>a0>>b0;
    int i = a0%=n;
    int j = b0%=n;
    do{
    
    
        result[num++] = make_pair(i,j);
        i = (i+a0)%n;
        j = (j+b0)%n;
    }while(i!=a0||j!=b0);
    cout<<num<<endl;
    while(num){
    
    
        num--;
        cout<<result[num].first<<" "<<result[num].second<<endl;
        
    }

}

Je suppose que tu aimes

Origine blog.csdn.net/weixin_47988292/article/details/130059628
conseillé
Classement