A 签到
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
if(n>=30) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
return 0;
}
B 签到
#include <bits/stdc++.h>
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int n;
long long d;
int count = 0;
long long a, b;
cin >> n >> d;
d *= d;
for (int i = 0; i < n; i++)
{
cin >> a >> b;
if (a * a + b * b <= d)
{
count++;
}
}
cout << count;
}
C 大数就取模。然后暴力求解即可
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define pb push_back
const int maxn=2e5+10;
const int mod=1e9+7;
ll k;
ll power(ll base,ll n)
{
ll r=1;
while(n)
{
if(n%2) r=r*base%k;
base=base*base%k;
n/=2;
}
return r;
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cin>>k;
ll sum=0;
int len=1;
while(1)
{
sum+=power(10,len-1)*7;
sum%=k;
if(sum%k==0)
{
cout<<len<<'\n';
return 0;
}
len++;
if(len>1e6)
{
cout<<-1<<'\n';
return 0;
}
}
}
D 思路:其实就是把所有的R的熟练一统计然后都给移到左边就行。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(){
int n;
string s;
cin>>n>>s;
cout<<count(s.begin(),s.begin()+count(s.begin(),s.end(),'R'),'W');
}
我看有人用指针来做的,其实道理是一样的,就是字符串中所有的R都在左边,然后所有的W都在右边就行了。
#define DIN freopen("input.txt","r",stdin);
#define DOUT freopen("output.txt","w",stdout);
#include <bits/stdc++.h>
#include <cstdio>
#define mem(a,b) memset(a,b,sizeof(a))
#define REP(i,a,b) for(int i=(a);i<=(int)(b);i++)
#define REP_(i,a,b) for(int i=(a);i>=(b);i--)
#define pb push_back
using namespace std;
typedef long long LL;
typedef vector<int> VI;
typedef pair<LL,LL> P;
int read()
{
int x=0,flag=1; char c=getchar();
while((c>'9' || c<'0') && c!='-') c=getchar();
if(c=='-') flag=0,c=getchar();
while(c<='9' && c>='0') {x=(x<<3)+(x<<1)+c-'0';c=getchar();}
return flag?x:-x;
}
const int maxn=2e5+5;
char s[maxn];
int l,r;
int main()
{
int n=read();
scanf("%s",s+1);
l=1,r=n;
int ans=0;
while(l<=r)
{
while(l<=n && s[l]=='R') l++;
while(r>=1 && s[r]=='W') r--;
if(l<r) swap(s[l],s[r]),ans++;
}
cout<<ans;
return 0;
}
E
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,k,ans=1e9+7;
int a[200005];
inline int up(int aa,int bb)
{
if (aa%bb==0) return aa/bb;
else return (aa/bb)+1;
}
bool check(int len)//check函数
{
int tot=0;
for (int i=1;i<=n;i++) tot=tot+up(a[i],len)-1;
if (tot<=k) return true;
else return false;
}
int Binary_search(int l,int r)//递归式二分写法
{
if (l==r||l+1==r)
{
if (check(l)) ans=min(ans,l);
if (check(r)) ans=min(ans,r);
return ans;
}
int mid=(l+r)>>1;
if (check(mid))
{
ans=min(ans,mid);
return Binary_search(l,mid);
}
else return Binary_search(mid+1,r);
}
signed main()
{
cin>>n>>k;
for (int i=1;i<=n;i++) cin>>a[i];
cout<<Binary_search(1,1e9)<<endl;
return 0;
}