【算法1-1】模拟与高精度

https://www.luogu.com.cn/training/106#problems

P1042 [NOIP2003 普及组] 乒乓球

乒乓球运动比赛规则11分制: 在一局比赛中,先得11分的一方为胜方。10平后,先夺得2分的一方为胜方。

#include<cstdio>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
void print(string s,int score)
{
    
    
	int a=0,b=0;
	for(int i=0;i<s.size();i++)
	{
    
    
		if(s[i]=='W') a++;
		if(s[i]=='L') b++;
		if(s[i]=='E') 
		{
    
    
		    cout<<a<<":"<<b<<endl;
		    break;
		}
		if(max(a,b)>=score&&abs(a-b)>=2)
		{
    
    
			cout<<a<<":"<<b<<endl;
			a=0,b=0;
		}
	}
}
int main(void)
{
    
    
	string s,a;
	while(cin>>a) s+=a;
	print(s,11);
	cout<<endl;
	print(s,21);
	return 0;
} 

P2670 [NOIP2015 普及组] 扫雷游戏

#include<bits/stdc++.h> 
using namespace std;
const int N=1e3+10;
int n,m,st[N][N];
string s[N];
void solve(int x,int y)
{
    
    
	for(int i=x-1;i<=x+1;i++)
		for(int j=y-1;j<=y+1;j++)
			if(i>=0&&i<=n-1&&y>=0&&y<=m-1&&s[i][j]=='*') st[x][y]++;
}
int main(void)
{
    
    
	cin>>n>>m;
	for(int i=0;i<n;i++) cin>>s[i];
	for(int i=0;i<n;i++)
		for(int j=0;j<m;j++)
			if(s[i][j]=='?') solve(i,j);
	for(int i=0;i<n;i++)
	{
    
    
		for(int j=0;j<m;j++)
		{
    
    
			if(s[i][j]=='*') cout<<s[i][j];
			else cout<<st[i][j];
		}
		puts("");
	}
	return 0;
}

P1563 [NOIP2016 提高组] 玩具谜题


P1601 A+B Problem(高精)

#include<bits/stdc++.h> 
using namespace std;
vector<int>A,B,C;
string a,b;
vector<int> add(vector<int> A,vector<int> B)
{
    
    
	int t=0;
	vector<int>c;
	for(int i=0;i<A.size()||i<B.size();i++)
	{
    
    
		if(i<A.size()) t+=A[i];
		if(i<B.size()) t+=B[i];
		C.push_back(t%10);
		t/=10;
	}
	if(t) C.push_back(1);
	return C;
}
int main(void)
{
    
    
	cin>>a>>b;
	for(int i=a.size()-1;i>=0;i--) A.push_back(a[i]-'0');
	for(int i=b.size()-1;i>=0;i--) B.push_back(b[i]-'0');
	C=add(A,B);
	for(int i=C.size()-1;i>=0;i--) cout<<C[i];
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_46527915/article/details/128731274
1-1