题目:P1009 [NOIP 1998 普及组] 阶乘之和
网址:https://www.luogu.com.cn/problem/P1009
思路:高精度加法和乘法
知识点:高精度
代码:
#include<bits/stdc++.h> #define ull unsigned long long #define ll long long #define pll pair<ll,ll> #define fi first #define cer2(a,b) cerr<<#a<<'='<<(a)<<','<<#b<<'='<<(b)<<"@ line"<<__LINE__<<endl #define se second #define db double #define eb emplace_back #define pb push_back using namespace std; const int maxn=1e6+100; const ll mode2=1e9+7; int vis[maxn]; string str; ll a[maxn]; ll n,m; vector<int> get_fac(int x) { vector<int>v(1000,0); v[0]=1; for(int i=2;i<=x;i++) { for(int j=0;j<1000;j++) v[j]*=i; int jw=0; for(int j=0;j<1000;j++) { v[j]+=jw; jw=v[j]/10; v[j]%=10; } } return v; } void solve() { vector<int>ans(1000,0); cin>>n; for(int i=1;i<=n;i++) { vector<int> v=get_fac(i); for(int j=0;j<1000;j++) ans[j]+=v[j]; } int jw=0; for(int i=0;i<1000;i++) { ans[i]+=jw; jw=ans[i]/10; ans[i]%=10; } int pos=1000-1; while(pos>=1&&ans[pos]==0) pos--; for(int i=pos;i>=0;i--) cout<<ans[i]; } int main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int T=1; // cin>>T; while(T--) solve(); return 0; }题目:P1042 [NOIP 2003 普及组] 乒乓球
网址:https://www.luogu.com.cn/problem/P1042
思路:结束的两个条件:1.必须有个人的得分大于等于11/21分;2.两个人的分差大于等于2.
知识点:模拟题
代码:
#include<bits/stdc++.h> #define ull unsigned long long #define ll long long #define pll pair<ll,ll> #define fi first #define cer2(a,b) cerr<<#a<<'='<<(a)<<','<<#b<<'='<<(b)<<"@ line"<<__LINE__<<endl #define se second #define db double #define eb emplace_back #define pb push_back using namespace std; const int maxn=1e6+100; const ll mode2=1e9+7; int vis[maxn]; string str; ll a[maxn]; ll n,m; void solve() { str=""; while(true) { string s; cin>>s; bool ok=false; for(int i=0;i<s.length();i++) { if(s[i]=='E') { ok=true; break; } str+=s[i]; } if(ok) break; } int len=str.length(); int W=0,L=0; for(int i=0;i<len;i++) { if(str[i]=='W') W++; else L++; if(max(W,L)>=11&&abs(W-L)>=2) { cout<<W<<":"<<L<<'\n'; W=0;L=0; } } cout<<W<<":"<<L<<'\n'; cout<<'\n'; W=0; L=0; for(int i=0;i<len;i++) { if(str[i]=='W') W++; else L++; if(max(W,L)>=21&&abs(W-L)>=2) { cout<<W<<":"<<L<<'\n'; W=0;L=0; } } cout<<W<<":"<<L<<'\n'; } int main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int T=1; // cin>>T; while(T--) solve(); return 0; }题目:P2670 [NOIP 2015 普及组] 扫雷游戏
网址:https://www.luogu.com.cn/problem/P2670
思路:主要是定义好两个方向数组,dx和dy。
知识点:模拟题
代码:
#include<bits/stdc++.h> #define ull unsigned long long #define ll long long #define pll pair<ll,ll> #define fi first #define cer2(a,b) cerr<<#a<<'='<<(a)<<','<<#b<<'='<<(b)<<"@ line"<<__LINE__<<endl #define se second #define db double #define eb emplace_back #define pb push_back using namespace std; const int maxn=1e6+100; const ll mode2=1e9+7; int vis[maxn]; string str[110]; ll a[maxn]; ll n,m; int dx[]={-1,-1,-1,0,0,1,1,1}; int dy[]={-1,0,1,-1,1,-1,0,1}; int cal(int x,int y) { int cnt=0; for(int i=0;i<=7;i++) { int xx=x+dx[i],yy=y+dy[i]; if(xx>=0&&xx<n&&yy>=0&&yy<m) { if(str[xx][yy]=='*') cnt++; } } return cnt; } void solve() { cin>>n>>m; for(int i=0;i<n;i++) { cin>>str[i]; } for(int i=0;i<n;i++) { for(int j=0;j<m;j++) { if(str[i][j]=='?') { int cnt=cal(i,j); str[i][j]='0'+cnt; } } } for(int i=0;i<n;i++) { cout<<str[i]<<'\n'; } } int main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int T=1; // cin>>T; while(T--) solve(); return 0; }题目:P1563 [NOIP 2016 提高组] 玩具谜题
网址:https://www.luogu.com.cn/problem/P1563
思路:我们按照题目的意思就行模拟,不要忘记进行取模操作
知识点:模拟
代码:
#include<bits/stdc++.h> #define ull unsigned long long #define ll long long #define pll pair<ll,ll> #define fi first #define cer2(a,b) cerr<<#a<<'='<<(a)<<','<<#b<<'='<<(b)<<"@ line"<<__LINE__<<endl #define se second #define db double #define eb emplace_back #define pb push_back using namespace std; const int maxn=1e6+100; const ll mode2=1e9+7; int vis[maxn]; string str; ll a[maxn]; ll n,m; int front[maxn]; string name[maxn]; void solve() { cin>>n>>m; for(int i=0;i<n;i++) { cin>>front[i]>>name[i]; } int now=0; while(m--) { int op,cnt; cin>>op>>cnt; if(front[now]==0)//nei { if(op==0)//zuo { now-=cnt; now=(now%n+n)%n; }else{//you now+=cnt; now=(now%n+n)%n; } }else{//wai if(op==0)//zuo { now+=cnt; now=(now%n+n)%n; }else{//you now-=cnt; now=(now%n+n)%n; } } } cout<<name[now]; } int main(){ ios::sync_with_stdio(0); cin.tie(0);cout.tie(0); int T=1; // cin>>T; while(T--) solve(); return 0; }