辽宁师范大学 • 张大为@https://daweizh.github.io/noip/
#include<iostream> #include<cstring> using namespace std; int a,b; char c; char cs[10000]; void abc(char * line){ int len=strlen(line); int tmp=0; for(int i=0;i<len;i++){ if('0'<=line[i]&&line[i]<='9'){ tmp=tmp*10+line[i]-'0'; }else{ if(line[i]!=' '){ c = line[i]; a = tmp; tmp = 0; } } } b=tmp; } int read(int d,char e,int f){ int tm=0; switch(e){ case '+' : tm=d+f ; break; case '-' : tm=d-f ; break; case '*' : tm=d*f ; break; case '/' : tm=d/f ; break; case '%' : tm=d%f ; break; } return tm; } int main(){ gets(cs); abc(cs); cout<<read(a,c,b)<<endl; return 0; }
#include <iostream> #include <cmath> using namespace std; int n; double cost=0,msg; int main(){ cin >> n; for(int i=0;i<n;i++){ cin >> msg; cost = cost + ceil(msg/70)*0.1; } printf("%.1f",cost); return 0; }
#include <iostream> #include <string> using namespace std; string name; float w; bool c; int n,cnt; int main(){ cin >> n; for(int i=0;i<n;i++){ cin >> name >> w >> c; if(w>=37.5 && c){ cout << name << endl; cnt++; } } cout << cnt << endl; return 0; }
#include <iostream> #include <cmath> using namespace std; int a[101][101],b[101][101]; int n,m,r,s,sum,mn=0x77777777,row,col; int main(){ cin >> n >> m; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ cin >> a[i][j]; } } cin >> r >> s; for(int i=0;i<r;i++){ for(int j=0;j<s;j++){ cin >> b[i][j]; } } for(int i=0;i<=n-r;i++){ for(int j=0;j<=m-s;j++){ sum = 0; for(int x=0;x<r;x++){ for(int y=0;y<s;y++){ sum = sum + abs(a[x+i][j+y]-b[x][y]); } } if(sum<mn){ mn = sum; row=i; col=j; } } } for(int i=row;i<row+r;i++){ cout << a[i][col]; for(int j=col+1;j<col+s;j++){ cout << " " << a[i][j]; } cout << endl; } return 0; }
#include <bits/stdc++.h> using namespace std; int main() { char temp; string str1,str2; int len=0;//len为单个字母长度 int N=0,index=0;//N为单词出现次数,index为第一次出现的位置, cin>>str1; while(cin.peek()!='\n')//去掉多余部分 { cin.get(); } cin.get();//拿走换行符 for(int i=0;str1[i]!='\0';i++) { if(str1[i]>='A'&&str1[i]<='Z') str1[i]+=-'A'+'a';//转换为小写 } bool count=0;//标记 while(cin.peek()!='\n')//结束条件为在第二行末尾输入了换行符 { temp=cin.peek();//观察现在位置是否为空格 if(temp==' ')//如果是空格就取走 { cin.get(); len++;//即便取走的是空格,位置也一定要加上 continue; } count=0; cin>>str2; len+=str2.size();//现在的位置 for(int i=0;str2[i]!='\0';i++) { if(str2[i]>='A'&&str2[i]<='Z') str2[i]+=-'A'+'a';//转换为小写 } if(str1==str2) { N++;//次数+1 count=1; } if(count&&N==1)//两个逻辑条件保证index记录的一定是第一次出现时的位置 index=len-str2.size(); } if(N==0) cout<<N-1;//未找到输出整数-1 else cout<<N<<" "<<index;//输出数据 return 0; }
#include <iostream> #include <cstdio> using namespace std; int n,m,a,b,s,cnt=0,mod=20123; int rn[10005][105],c[10005]; bool rs[10005][105]; int main(){ //freopen("P1076_1.in","r",stdin); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) for(int j=0;j<m;j++){ scanf("%d%d",&rs[i][j],&rn[i][j]); c[i]+=rs[i][j]; } scanf("%d",&s); for(int i=1;i<=n;i++){ int r = rn[i][s]; cnt = (cnt + r)%mod; r = r%c[i]; if(r==0) r = c[i]; while(r){ if(rs[i][s]) r = r - 1; if(r==0) break; s++; if(s==m) s=0; } } cout << cnt << endl; return 0; }
#include <iostream> #include <queue> #include <set> using namespace std; set<int> s; queue<int> q; int n,m,ans,x; int main(){ cin >> m >> n; for(int i=0;i<n;i++){ cin >> x; if(s.find(x)==s.end()){ ans++; if(s.size()==m){ int t = q.front(); q.pop(); s.erase(t); } s.insert(x); q.push(x); } } cout << ans << endl; return 0; }
#include <iostream> #include <string> using namespace std; char m[26][26]; string key,sect; void code(){ for(int i=0;i<26;i++){ for(int j=0;j<26;j++){ m[i][j] = 'A'+(i+j)%26; } } } char trans(char src,char dst){ char c, c1=src,c2=dst; if(c1>='a' && c1<='z') c1 = src-32; if(c2>='a' && c2<='z') c2 = dst-32; for(int i=0;i<26;i++){ if(m[c1-'A'][i]==c2){ c = 'A'+i; break; } } if(dst>='a' && dst<='z') c = c +32; return c; } int main(){ code(); cin >> key >> sect; int lk = key.size(); int ls = sect.size(); for(int i=0;i<ls;i++){ cout << trans(key[i%lk],sect[i]); } cout << endl; return 0; }
#include <iostream> #include <cstring> #include <string> using namespace std; int n,m,a[105][105],b[105][105]; string s; void A(int n,int m ){ memset(b,0,sizeof(b)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ b[j][n-i-1] = a[i][j]; } } memset(a,0,sizeof(a)); for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ a[i][j]=b[i][j]; } } return; } void B(int n,int m ){ memset(b,0,sizeof(b)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ b[m-j-1][i] = a[i][j]; } } memset(a,0,sizeof(a)); for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ a[i][j]=b[i][j]; } } return; } void C(int n,int m ){ memset(b,0,sizeof(b)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ b[i][j] = a[i][m-j-1]; } } memset(a,0,sizeof(a)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ a[i][j]=b[i][j]; } } return; } void D(int n,int m ){ memset(b,0,sizeof(b)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ b[i][j] = a[n-i-1][j]; } } memset(a,0,sizeof(a)); for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ a[i][j]=b[i][j]; } } return; } int main(){ cin >> n >> m; for(int i=0;i<n;i++) for(int j=0;j<m;j++) cin >> a[i][j]; cin >> s; int len = s.size(); for(int i=0;i<len;i++) switch(s[i]){ case 'A': A(n,m); swap(n,m); break; case 'B': B(n,m); swap(n,m); break; case 'C': C(n,m); break; case 'D': D(n,m); break; } for(int i=0;i<n;i++){ cout << a[i][0]; for(int j=1;j<m;j++) cout << " " << a[i][j]; cout << endl; } return 0; }
#include <iostream> using namespace std; const int maxn = 10005; int used[maxn],number[maxn],n; int prime(int n){ int cnt = 0; for(int i=2;i<=n;i++){ if(!used[i]){ number[++cnt]=i; } for(int j=1;(j<=cnt)&&(i*number[j]<=n);j++){ used[i*number[j]] = true; if(i%number[j]==0) break; } } return cnt; } int main(){ cin >> n; int t = prime(n),flag=1; for(int i=1;i<t;i++) if(number[i+1]-number[i]==2) flag=0,cout << number[i] << " " << number[i+1] << endl; if(flag) cout << "empty" << endl; return 0; }