原文:
信息学奥赛一本通 1325:【例7.4】 循环比赛日程表
信息学奥赛一本通 1326:【例7.5】 取余运算(mod)
解决方案:
#include <iostream>
using namespace std;
short a[1500][1500];
int M;
int N=1;
void more(int );
int main(){
cin>>M;
for(int i=0;i<M;i++){
N*=2;
}
a[0][0]=1;
int n=1;
for(int i=0;i<M;i++){
more(n);
n*=2;
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<a[i][j]<<' ';
}
cout<<endl;
}
return 0;
}
void more(int l){
for(int i=l;i<2*l;i++){
for(int j=0;j<l;j++){
a[i][j]=a[i-l][j]+l;
}
}
for(int i=0;i<l;i++){
for(int j=l;j<2*l;j++){
a[i][j]=a[i][j-l]+l;
}
}
for(int i=l;i<2*l;i++){
for(int j=l;j<2*l;j++){
a[i][j]=a[i-l][j-l];
}
}
}
#include <iostream>
using namespace std;
typedef long long ll;
ll b,p,k;
ll mod(ll,ll,ll);
int main(){
cin>>b>>p>>k;
cout<<b<<'^'<<p<<" mod "<<k<<'='<<mod(b,p,k)<<endl;
return 0;
}
ll mod(ll a,ll b,ll K){//dishu zhishu chushu
if(b==1){
return a%K;
}
else if(b%2==0){
ll Tem=mod(a,b/2,K);
return (Tem*Tem)%K;
}else{
ll Tem=mod(a,b/2,K);
return (Tem*Tem*a)%K;
}
}