【ABC】152題解
阿新 • • 發佈:2021-06-17
傳送門:
A
int main(){
int n, m; cin>>n>>m;
if(n>m) puts("No");
else puts("Yes");
return 0;
}
B
int main(){
int a, b; cin>>a>>b;
if(a>b) swap(a, b);
int ans=0;
while(b--){
ans=ans*10+a;
}
cout<<ans;
return 0;
}
C
樹狀陣列維護一下即可
#pragma GCC optimize("O3") #include<bits/stdc++.h> using namespace std; #define endl '\n' #define debug(x) cerr << #x << ": " << x << endl #define pb(a) push_back(a) #define set0(a) memset(a,0,sizeof(a)) #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define dwn(i,a,b) for(int i=(a);i>=(b);i--) #define ceil(a,b) (a+(b-1))/b #define INF 0x3f3f3f3f #define ll_INF 0x7f7f7f7f7f7f7f7f typedef long long ll; typedef pair<int,int> PII; typedef pair<double,double> PDD; inline void read(int &x) { int s=0;x=1; char ch=getchar(); while(ch<'0'||ch>'9') {if(ch=='-')x=-1;ch=getchar();} while(ch>='0'&&ch<='9') s=(s<<3)+(s<<1)+ch-'0',ch=getchar(); x*=s; } const int N=2e5+5; int tr[N]; int lowbit(int x){return x&-x;} void modify(int p, int v){ for(;p<N; p+=lowbit(p)) tr[p]+=v; } int query(int p){ int res=0; for(;p;p-=lowbit(p)) res+=tr[p]; return res; } int main(){ int n; read(n); int cnt=0; rep(i,1,n){ int k; read(k); modify(k, 1); if(query(k)==1) cnt++; } cout<<cnt; return 0; }
D
\(f[i][j]\) 表示首為 \(i\) 尾為 \(j\) 的數的個數。
\(ans = \sum_{i=0}^9\sum_{j=0}^9 f[i][j]\times f[j][i]\)
#pragma GCC optimize("O3") #include<bits/stdc++.h> using namespace std; #define endl '\n' #define debug(x) cerr << #x << ": " << x << endl #define pb(a) push_back(a) #define set0(a) memset(a,0,sizeof(a)) #define rep(i,a,b) for(int i=(a);i<=(b);i++) #define dwn(i,a,b) for(int i=(a);i>=(b);i--) #define ceil(a,b) (a+(b-1))/b #define INF 0x3f3f3f3f #define ll_INF 0x7f7f7f7f7f7f7f7f typedef long long ll; typedef pair<int,int> PII; typedef pair<double,double> PDD; inline void read(int &x) { int s=0;x=1; char ch=getchar(); while(ch<'0'||ch>'9') {if(ch=='-')x=-1;ch=getchar();} while(ch>='0'&&ch<='9') s=(s<<3)+(s<<1)+ch-'0',ch=getchar(); x*=s; } int f[10][10]; int main(){ int n; cin>>n; rep(i,1,n){ string si=to_string(i); f[si[0]-'0'][si[si.size()-1]-'0']++; } int res=0; rep(i,0,9) rep(j,0,9) res+=f[i][j]*f[j][i]; cout<<res<<endl; return 0; }
E
直接用py卡過去了orz
def gcd(a, b):
return b if a%b==0 else gcd(b, a%b)
mod=int(1e9+7)
n=int(input())
a=[int(i) for i in input().split()]
res=1
for i in a:
res*=i//gcd(i, res)
print(sum(res//i for i in a)%mod)