提交时间:2024-10-30 15:37:07
运行 ID: 33930
#include<bits/stdc++.h> #define int long long #define endl '\n' using namespace std; inline int gcd(int a,int b){return !b?a:gcd(b,a%b);} const int maxn=1e5+7; int n,k; int d,l; int Get(int i,int j){ return (i+j*k)%n; } signed main(){ cin>>n>>k; d=gcd(n,k); if(n%2==0){ cout<<-1<<endl; return 0; } l=n/d; cout<<(n-1)/2<<endl; if(d==1){ for(int i=0;i<=l-3;i+=2)cout<<Get(0,i)<<" "<<Get(0,i+1)<<endl; return 0; } for(int j=0;j<=l-3;j+=2)for(int i=0;i<=d-2;i++)cout<<Get(i,j)<<" "<<Get(i+1,j+1)<<endl;//(l-1)/2*(d-1) for(int i=0;i<=l-3;i+=2)cout<<Get(d-2,i)<<" "<<Get(d-1,i)<<endl;//(l-1)/2 for(int i=0;i<=d-3;i+=2)cout<<Get(i,l-2)<<" "<<Get(i+1,l-2)<<endl;//(d-1)/2 return 0; }