T1T1

考试错误:无。

思路:

本题与余数有关,最大可以分到的糖果数是n1n-1,如果l,rl,r都在一个倍数阶级(l/n==r/nl/n==r/n),输出r%nr\% n,否则输出n1n-1

代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
	freopen("candy.in","r",stdin);
	freopen("candy.out","w",stdout);
    int n,l,r;
    cin >> n >> l >> r;
    if(r-l+1>=n-l%n+1) cout << n-1;
    else cout << r%n;
}

T3T3

考试错误:无。

思路:

大模拟,多注意特判就行了。

特判数据合集:

输入数据1

5
Server ...:
Server .0.0.0:0
Server 0.0.00.0:0
Server 0.0.0.0:00
Server 1.2.3.4:0

输出数据1

ERR
ERR
ERR
ERR
OK

代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;
unordered_map<string,int> mp;
int idx=1;
bool check(string s){
	vector<int> A;
	vector<char> B;
	s=" "+s;
	for(int i=1;i<s.size();i++){
		int x=i;
		int z=0,cnt=0;
		while(i<s.size()&&isdigit(s[i])){
			z=z*10+s[i++]-'0';
			cnt++;
			if(z>65535) return 0;
		}
		if(s[x]=='0'&&(x==1||s[x-1]=='.'||s[x-1]==':')&&(z||cnt>1)) return 0;
		if(cnt) A.push_back(z);
		if(i>=s.size()) break;
		B.push_back(s[i]);
	}
	return bool(A.size()==5&&B.size()==4&&B[0]=='.'&&B[1]=='.'&&B[2]=='.'&&B[3]==':'&&A[0]<=255&&A[1]<=255&&A[2]<=255&&A[3]<=255&&A[4]<=65535);
}
signed main(){
	freopen("net.in","r",stdin);
	freopen("net.out","w",stdout);
	int n;
	cin >> n;
	for(int i=1;i<=n;i++){
		string a,b;
		cin >> a >> b;
		if(check(b)){
			if(mp[b]&&a=="Server"||mp[b]==0&&a=="Client"){
				cout << "FAIL\n";
			}else{
				if(a=="Server"){
					cout << "OK\n";
					mp[b]=i;
				}else{
					cout << mp[b] << "\n";
				}
			}
		}else{
			cout << "ERR\n";
		}
	}
}