补♂课第110场解题报告
来源:互联网 发布:酷狗直播mac版 编辑:程序博客网 时间:2024/06/05 11:24
overview
A - 算术运算
#include<stdio.h>int main(){ long long a,b; char c; while(scanf("%lld %c %lld",&a,&c,&b)!=EOF) printf("%lld\n",c=='+'?a+b:a-b);}
B - 判断数字个数
输入有空格,要用gets整行读入。
#include<stdio.h>#include<string.h>#include<ctype.h>int main(){ for(char s[1024]; gets(s);) { int cnt[10]; memset(cnt,0,sizeof(int)*10); for(int i=strlen(s)-1; i!=-1; --i) if(isdigit(s[i])) ++cnt[s[i]-'0']; for(int i=0; i!=10; ++i) if(cnt[i]) printf("%d:%d\n",i,cnt[i]); }}
如果嫌这组题字符串太多,也可以像这样用getchar避开字符串操作。
#include<stdio.h>int cnt[10]= {0};int main(){ for(char ch; (ch=getchar())!=EOF;) { if(ch=='\n') for(int i=0; i!=10; cnt[i++]=0) if(cnt[i]) printf("%d:%d\n",i,cnt[i]); if('0'<=ch&&ch<='9') ++cnt[ch-'0']; }}
C - 素数回文数的个数
判断一个数是否回文有些繁琐,考虑到n的范围不如手动去构造回文数判断是否为素数。
考虑有多次询问,可以先生成一张回文素数表,对于每次询问直接查表。
另外,下述代码中表恰好是从小到大存储的,因此可以直接二分查找第一个比n小的数的下标作为答案,请自己实现。
#include<stdio.h>int isPrime(int n){ for(int i=2; i*i<=n; ++i) if(n%i==0) return 0; return 1;}int main(){ int a[128],len=0; for(int i=11; i<=99; i+=11) if(isPrime(i)) a[len++]=i; for(int i=1; i<=9; ++i) for(int j=0; j<=90; j+=10) if(isPrime(i*101+j)) a[len++]=i*101+j; for(int n,ans; scanf("%d",&n)!=EOF; printf("%d\n",ans)) for(int i=ans=0; i!=len; ++i) if(n>=a[i]) ++ans;}
D - 扩号匹配
#include<stdio.h>char s[1024];int pipei(int p){ for(int cnt=1; cnt;) { if(s[--p]=='2')++cnt; else --cnt; } return p;}int main(){ for(int n; scanf("%d%s",&n,s)!=EOF; printf("\n")) for(int i=0; i!=n; ++i) if(s[i]=='2') printf("%d ",pipei(i)+1);}
E - 加减乘除
#include<stdio.h>int main(){ int a,b,d; for(char c; scanf("%d %c",&a,&c)!=EOF;) { if(c=='!') { for(int i=d=1; i<=a; d*=i++); printf("%d\n",d); continue; } scanf("%d",&b); if(!b&&(c=='/'||c=='%')) printf("error\n"); else printf("%d\n", c=='+'?a+b: c=='-'?a-b: c=='*'?a*b: c=='/'?a/b:a%b); }}
F - 期末考试第二题——比较数字个数
#include<stdio.h>int main(){ for(char s[2][128],cnt[256],flag; gets(s[0]),gets(s[1]); printf("%d\n",!flag)) { for(int i=flag=0; i!=256; cnt[i++]=0); for(int i=0; s[1][i]; ++i) ++cnt[s[1][i]]; for(int i=0; s[0][i]; ++i) if('a'<=s[0][i]&&s[0][i]<='z') if(--cnt[s[0][i]]<0) flag=1; }}
G - 期末考试第三题——最大最小数之差
#include<stdio.h>int main(){ for(char s[32]; gets(s);) { long long p=0,q=0,len=0,a[32]; for(int i=0; s[i]; ++i) { if('0'<=s[i]&&s[i]<='9') a[len++]=s[i]-'0'; if('a'<=s[i]&&s[i]<='f') a[len++]=s[i]-'a'+10; if('A'<=s[i]&&s[i]<='F') a[len++]=s[i]-'A'+10; for(int j=0,t; j!=len; ++j)//使插入元素有序 if(a[j]>a[len-1]) { t=a[j]; a[j]=a[len-1]; a[len-1]=t; } } for(int i=0; i!=len; ++i) p=p*16+a[i]; for(int i=len-1; i!=-1; --i) q=q*16+a[i]; printf("%lld\n",q-p); }}
H - 停车场收费
#include<stdio.h>int main(){ for(double t; scanf("%lf",&t)!=EOF; printf("%.2lf\n",t<3?5:t>20.5?40:2*t-1));}
I - Inserting Something in Strings
#include<stdio.h>int main(){ for(char s[2][16],pos; scanf("%s%s",s[0],s[1])!=EOF; printf("\n")) { for(int i=pos=0; s[0][i]; ++i) if(s[0][pos]<s[0][i]) pos=i; for(int i=0; s[0][i]; ++i) printf("%c%s",s[0][i],i==pos?s[1]:""); }}
J - 有未知数的表达式
递归求表达式的应用,熟悉栈结构也可以用之代替。
留下思考:如果表达式中有括号怎么处理。
#include<stdio.h>#include<string.h>#include<math.h>char s[32];int work(int l,int r){ for(int i=r; i>=l; --i) { if(s[i]=='+') return work(l,i-1)+work(i+1,r); if(s[i]=='-') return work(l,i-1)-work(i+1,r); } for(int i=l,b=0; i<=r; ++i) { if('0'>s[i]||s[i]>'9') { if(i==l)break; return b*work(i,r); } b=b*10+s[i]-'0'; if(i==r)return b; } for(int i=r; i>=l; --i) if(s[i]=='^') return pow(work(l,i-1),work(i+1,r)); return l>r?0:3;}int main(){ while(scanf("%s",s)!=EOF) printf("%d\n",work(0,strlen(s)-1));}
阅读全文
0 0
- 补♂课第110场解题报告
- 补♂课第10场解题报告
- 补♂课第11场解题报告
- POJ1250解题报告补
- CUGBACM14级喜迎开学第1场 解题报告
- NOI2015补全+解题报告
- NOI2014补全+解题报告
- 腾讯马拉松编程大赛第0,1,5场解题报告
- Problem G: 补提交 (解题报告)
- codeforces #397 problemE 解题报告 补题
- codeforces #397 problemF 解题报告 补题
- 新生赛暑假第一场 解题报告
- 130725hdu杭电多校第二场解题报告
- 多校第七场解题报告
- 多校第八场解题报告
- bo_jwolf不卖萌的第二场解题报告
- openjudge3344 冷血格斗场 解题报告
- 集训第一周解题报告
- java 开发模式之八 : 外观模式(门面模式)
- 如何选择一个适合自己的加密方案,加密算法呢
- HTML笔记(一)
- C++温故而知新----3
- Node.js笔记
- 补♂课第110场解题报告
- 自动驾驶汽车 实现实时交通信号灯检测和分类
- 你真的知道怎么创建一个长度为n的有序数组吗?
- eclipse 上传代码至git
- 《C++ Primer》读书笔记第十四章-1-重载IO、算术、关系等运算符
- 二叉树的前序中序后序的递归和非递归遍历
- ptmalloc
- javaweb 分页
- Codeforces 903G Yet Another Maxflow Problem 线段树+网络流