AtCoder Beginner Contest 165 A ~~D

2020-09-10 21:31:57 浏览数 (1)

A 水题:

代码语言:javascript复制
#include<bits/stdc  .h>

using namespace std;

int main(){
    int k;
    cin>>k;
    int a,b;
    cin>>a>>b;
    for(int i=1;;i  ){
    	if(i*k > b) {
    		cout<<"NG"<<endl;
    		break;
		}
		if(i*k>=a && i*k<=b){
			cout<<"OK"<<endl;
			break;
		}
	}
	return 0;
} 

B 水题:

代码语言:javascript复制
#include<bits/stdc  .h>

using namespace std;
typedef long long ll;
int main(){
    ll x;
    cin>>x;
    ll sum = 100;
    ll tot =0;
    while(sum<x){
    	ll res = sum *0.01;
    	//cout<<res<<"0---";
    	sum  = res;
    	tot  ;
	}
	cout<<tot;
	return 0;
} 

C

一个典型的DFS 因为数据比较小,所以我们能这样子为序列中每一个元素赋值,然后维护更新得到最大值就行了。

代码语言:javascript复制
#include<bits/stdc  .h>
#define inf 0x3f3f3f3f
using namespace std;

int s[20];
int a[20],b[20],c[20],d[20];
int sum = -inf;
int n,m,q;

void check(){
	int no = 0;
	for(int i=0;i<q;i  ){
		if(s[b[i]] - s[a[i]] == c[i]){
			no  = d[i];
		}
	}
	sum = max(sum,no);
	return;
}


void dfs(int now,int val){
	s[now] = val;
	if(now == n){
		check();
		return;
	}
	for(int i=val;i<=m;i  ){
		dfs(now 1,i);
	}
}


int main(){
	cin>>n>>m>>q;
	for(int i=0;i<q;i  ){
		cin>>a[i]>>b[i]>>c[i]>>d[i];
	}
	dfs(1,1);
	cout<<sum<<endl;
	return 0;
} 

D 水题: 就是分析一下,当n<b时,后面那个为整体0,所以最大就是n取最大就行了, 否则就是取b-1跟取n比较一下取较大值就行了。

代码语言:javascript复制
#include<bits/stdc  .h>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;



int main(){
	ll a,b,n;
	cin>>a>>b>>n;
	ll flag=-inf;
	
	/*for(ll i=1;i<=n;i  ){
	
	   flag = max(res-ans,flag);
		
	}
	*/
	if(n < b){
		cout<<(a*n)/b<<endl;
		return 0;
	} 
	else{
		flag = max(a*(b-1)/b,flag);
		
			flag = max(flag,(a*n)/b-a*(n/b));
		
	}
	cout<<flag<<endl;
	return 0;
}

0 人点赞