A
#include<bits/stdc++.h>
using namespace std;
//int a[10001];
//int b[10001];
int main(){
long long n,x,y;
cin>>n;
cin>>x>>y;
long long l=x;
for(int j=1;j<n;j++){
cin>>x>>y; //l++;
for(int k=0;k<100000000;k++){ //枚举上班的时间
if(x+k*y>l){
l=x+k*y;
break;
}
}
}
cout<<l<<endl;
return 0;
}
B
稍微有些麻烦 字符串头尾相接 是一个 环
每个字符只能向后移动或者向前移动
样例解释 c t t c -> c c t t dfabc-> fabcd-> abcdf dfacb 同理
#include<iostream>
#include<string>
#include<string.h>
using namespace std;
const int maxn=50;
int n;
char s[maxn];
bool latt(int p,int q){
int n=strlen(s);
for(int i=0;i<n;i++)
if(s[(p+i)%n]!=s[(q+i)%n])
return s[(p+i)%n]<s[(q+i)%n]; //这个地方好好看看 好好理解 取模的 概念
return 0; //相等 无需比较
}
int main(){
int t,i;
cin>>t;
// char s[maxn];
while(t--){
cin>>s;
int ans=0;
int n=strlen(s);
for(i=1;i<n;i++)
if(latt(i,ans)) ans=i;
for(i=0;i<n;i++)
cout<<s[(i+ans)%n];
cout<<endl;
}
return 0;
}