E.A+B问题
思路
不用考虑溢出的情况,所以总对数不会变,直接输出
4294967296
至于C为偶数的情况,a=1,b=1和b=1,a=1是两种情况
I.寻找子串
代码
#include<bits/stdc++.h>
using namespace std;
#define fori(i,a,n) for(ll i=a;i<n;i++)
#define per(i,a,n) for(ll i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define lowbit(x) (x&-x)
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((ll)(x).size())
typedef long long ll;
typedef vector<ll> vi;
typedef pair<ll,ll> pii;
typedef double db;
//const ll INF = ox7fffffff;
const ll mod=1e9+7;
const ll N=200005;
ll arr[N];
ll temp[N];
int main(){
string s;
cin >> s;
ll len=s.length();
char x=s[0];
fori(i,1,len){
x=max(s[i],x);
}
ll first=0;
ll p1=0;
fori(i,0,len){
if(s[i]==x&&first==0){
p1=i;
first=1;
}
else if(s[i]==x&&first==1){
if(s[i]==s[i-1]){
continue;
}else{
ll p2 = i;
ll p3 = p1;
ll flag=0;
while(p3<i){
if(s[p3]!=s[p2]){
flag=1;
if(s[p3]>s[p2]){
break;
}else{
p1=i;
}
}
p3++,p2++;
}
if(flag==0){
p1=i;
}
}
}
}
// cout << p1 << endl;
fori(i,p1,len){
cout << s[i];
}
return 0;
}
思路
我写的太复杂了
最大的差
代码
#include<bits/stdc++.h>
using namespace std;
#define fori(i,a,n) for(ll i=a;i<n;i++)
#define per(i,a,n) for(ll i=n-1;i>=a;i--)
#define pb push_back
#define mp make_pair
#define lowbit(x) (x&-x)
#define all(x) (x).begin(),(x).end()
#define fi first
#define se second
#define SZ(x) ((ll)(x).size())
typedef long long ll;
typedef vector<ll> vi;
typedef pair<ll,ll> pii;
typedef double db;
//const ll INF = ox7fffffff;
const ll mod=1e9+7;
const ll N=200005;
ll arr[N];
ll temp[N];
bool cmp(ll x,ll y){
return x>y;
}
int main(){
ll n;
cin >> n;
fori(i,0,n) cin >> arr[i],temp[i]=arr[i];
sort(arr,arr+n);
// fori(i,0,n){
// cout << arr[i];
// }
sort(temp,temp+n,cmp);
// cout << temp[0]<<" " << arr[n-1];
cout << temp[0]-arr[0];
return 0;
}
思路
签到题