D首先看到这题通过手推会发现所有的点都能成立,因为如果XY相同等式一定成立,XY不同时X|Y==1那么|X-Y|就会少1直到xy相等;
#include <bits/stdc++.h>
#define int long long
#define IOS ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
const int maxn=2e5+50;
const int INF=0x3f3f3f3f;
using namespace std;
signed main(){
IOS;
int t;
cin>>t;
while(t--){
int ans=0;
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
for(int i=x1;i<=x2;i++){
for(int j=y1;j<=y2;j++){
ans++;
}
}
cout<<ans<<'\n';
}
return 0;
}G:比赛时一直纠结好久0^n是不是没有意义,0^0==1那么输入0 n得出的结果是0 还是-1;所以这题没写出来...
其实因该是-1...
后来补题的
while(t--){
int n,m;cin>>n>>m;
if(n==0||m==0||n==1)cout<<-1<<'\n';
else {
unsigned long long ans=1;
int k=0;
while(m>=n){
m/=n;k++;
}
cout<<k<<'\n';
}H:对称之美,我纯暴力模拟写的。。无论奇数还是偶数行前n/2行和后n/2行扫一遍,然后看是不是能有n/2次找到相同的字母,需要注意的是(记得break)每两行找到一个就够了
#include <bits/stdc++.h>
#define int long long
#define IOS ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
const int maxn=1e5+50;
const int INF=0x3f3f3f3f;
using namespace std;
char a[105][55];
int b[505][505];
signed main(){
int t;cin>>t;
while(t--){
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
int ans=0;
for(int i=0;i<n/2;i++){
int flag=0;
for(int j=0;j<a[i][j]!='\0';j++){
for(int k=0;a[n-1-i][k]!='\0';k++){
if(a[i][j]==a[n-1-i][k]){ans++;flag=1;break;
}
}
if(flag==1)break;
}
}
// cout<<ans;
if(ans==n/2)cout<<"Yes"<<'\n';
else cout<<"No"<<'\n';
}
return 0;
}I非对称之美:这个算是思维题吧如果是回文字符串就比字符长度少1,如果不是就输出字符长度,特殊考虑一下整个字符串就一种字符的比如aaaaa
#include <bits/stdc++.h>
#define int long long
#define IOS ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0)
const int maxn=1e5+50;
const int INF=0x3f3f3f3f;
using namespace std;
int a[26]={0};
int b[505][505];
signed main(){
string s;
cin>>s;
string s1="";
for(int i=0;i<s.size();i++){
a[s[i]-'a']++;
}
int l=0; int m=s.size();
for(int i=m-1;i>=0;i--){
s1+=s[i];
}
int flag=-1;
for(int i=0;i<26;i++){
if(a[i]==m)flag=1;
// cout<<a[i]<<" ";
}
// cout<<s<<" "<<s1<<'\n';
if(flag==1)cout<<0<<'\n';
else {
if(s==s1)cout<<m-1<<'\n';
else cout<<m<<'\n';
}
return 0;
}
京公网安备 11010502036488号