AtCoder Regular Contest 113 题解(待补)

传送门:https://atcoder.jp/contests/arc113

A

直接暴力。

#pragma GCC optimize("O3")
#include<bits/stdc++.h>
using namespace std;
#define SET0(a) memset(a,0,sizeof(a))
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define DWN(i,a,b) for(int i=(a);i>=(b);i--)
#define INF 0x3f3f3f3f
typedef long long ll;

int main(){
	int k; cin>>k;
	
	ll cnt=0;
	FOR(i,1,k){
		FOR(j,1,k){
			if(i*j>k) break;
			FOR(u,1,k){
				if(i*j*u<=k) cnt++;
				else break;
			}
		}
	}
	cout<<cnt<<endl;
    return 0;
}

B

一道扩展欧拉定理的裸题。

#pragma GCC optimize("O3")
#include<bits/stdc++.h>
using namespace std;
#define SET0(a) memset(a,0,sizeof(a))
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define DWN(i,a,b) for(int i=(a);i>=(b);i--)
#define INF 0x3f3f3f3f
typedef long long ll;

ll fpow(ll x,ll p,ll mod){
	ll res=1;
	for(;p;p>>=1,x=x*x%mod)
		if(p&1) res=res*x%mod;
	return res%mod;
}
int main(){
	ll a,b,c; cin>>a>>b>>c;
	if(b==1 || (b==2 && c==1) || (b==3 && c==1)){
		cout<<fpow(a,b,10)<<endl;
		return 0;
	}
	
	ll p=fpow(b,c,4)+4;
	cout<<fpow(a,p,10)<<endl;
    return 0;
}

C

模拟+双指针

#pragma GCC optimize("O3")
#include<bits/stdc++.h>
using namespace std;
#define SET0(a) memset(a,0,sizeof(a))
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define DWN(i,a,b) for(int i=(a);i>=(b);i--)
#define INF 0x3f3f3f3f
typedef long long ll;

const int N=2e5+5;
char ch[N];
int dic[27];
int main(){
	cin>>ch+1;
	int len=strlen(ch+1);
	ch[len+1]='#';
	int s,t; s=t=len;
	ll cnt=0;
	int tmp=len+1;
	while(t){
		while(ch[t-1]!=ch[s] && t) {
			t--;
			dic[ch[s]-'a']++;
			s=t;
		}
		while(ch[t-1]==ch[s] && t) t--;
		if(s!=t) {
			cnt+=tmp-1-s;
			cnt-=dic[ch[s]-'a'];
			if(ch[s]!=ch[tmp]) cnt+=len-tmp+1;
			memset(dic,0,sizeof dic);
		}
		tmp=t;
		if(t) t--,s=t;
	}
	cout<<cnt<<endl;
    return 0;
}
原文地址:https://www.cnblogs.com/Tenshi/p/14427834.html