A 水题:

#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 水题:

#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
因为数据比较小,所以我们能这样子为序列中每一个元素赋值,然后维护更新得到最大值就行了。

#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比较一下取较大值就行了。

#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;
}