题解:补♂课第110场
overview
【强迫症系列】所有代码的main函数都只由for语句构成,其余部分也尽可能地用for语句缩短代码。
A - 算术运算
#include<stdio.h>
long long a,b;
int main()
{for(char c; scanf("%lld %c %lld",&a,&c,&b)!=EOF; printf("%lld\n",c=='+'?a+b:a-b));
}
B - 判断数字个数
输入有空格,要用gets整行读入。
#include<stdio.h>
int cnt[256]= {0};
int main()
{for(char s[1024]; gets(s);){for(int i=0; s[i]; ++i)++cnt[s[i]];for(char i='0'; i<='9'; cnt[i++]=0)if(cnt[i])printf("%c:%d\n",i,cnt[i]);}
}
如果嫌这组题字符串太多,也可以像这样用getchar避开字符串操作。
#include<stdio.h>
int cnt[256]= {0};
int main()
{for(char ch; (ch=getchar())!=EOF; ++cnt[ch])if(ch=='\n')for(char i='0'; i<='9'; cnt[i++]=0)if(cnt[i])printf("%c:%d\n",i,cnt[i]);
}
C - 素数回文数的个数
#include<stdio.h>
int isPrime(int n)
{for(int i=2; i*i<=n; ++i)if(n%i==0)return 0;return 1;
}
int isPalindromic(int n)
{int m=0;for(int t=n; t; t/=10)m=m*10+t%10;return m==n;
}
int main()
{for(int n,ans; scanf("%d",&n)!=EOF; printf("%d\n",ans))for(int i=11+(ans=0); i<=n; ++i)if(isPrime(i)&&isPalindromic(i))++ans;
}
优解:手动构造回文数判断是否为素数。考虑有多次询问,可以先生成一张回文素数表,对于每次询问直接查表。此外,下述代码中表恰好是从小到大存储的,因此可以直接二分查找第一个比n小的数的下标作为答案,请自己实现。
#include<stdio.h>
int len=0,a[128]= {0};
int isPrime(int n)
{for(int i=2; i*i<=n; ++i)if(n%i==0)return 0;return 1;
}
int main()
{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 a,b;
int main()
{for(char c; scanf("%d %c",&a,&c)!=EOF;){if(c=='!'){for(int i=b=1; i<=a; b*=i++);printf("%d\n",b);continue;}scanf("%d",&b);if(!b&&(c=='/'||c=='%'))printf("error\n");elseprintf("%d\n",c=='+'?a+b:c=='-'?a-b:c=='*'?a*b:c=='/'?a/b:a%b);}
}
F - 期末考试第二题——比较数字个数
#include<stdio.h>
int main()
{for(char flag,s[2][128],cnt[256]; 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>
long long p,q,len,a[32];
int main()
{for(char s[32]; gets(s); printf("%lld\n",q-p)){for(int i=p=q=len=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];}
}
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 pos,s[2][16]; 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()
{for(; scanf("%s",s)!=EOF; printf("%d\n",work(0,strlen(s)-1)));
}
题解:补♂课第110场相关推荐
- 2020 牛客暑期训练营补题(第一场)
暑假还是不能摸鱼了,尽量每天补一道题. 这里大部分的补题应该都是参考了大佬的题解,所以如果有大佬看到了自己的解法,请多多包涵. 第一场 A题 题目描述 题目思路 代码 F题 I题 J题 A题 题目描述 ...
- 2020多校补题第四场
1011: 瞎算一通过了 看题解发现竟然直接输出就行 当时的代码: #include<bits/stdc++.h> using namespace std; const double G= ...
- GDUT_排位赛题解报告_第3场_B.Loan Repayment
题目: Farmer John owes Bessie N gallons of milk (1≤N≤1012). He has to give her the milk within K days. ...
- GDUT_排位赛题解报告_第5场_A. 唯一排列
题目 ChenJr给你一个长度为n的排列p,你可以交换其中任意相邻的两个数.现在你需要用最小的交换次数使得这个排列变成升序的序列.现在ChenJr想知道,对于这个排列p,是否存在唯一的交换方式,使得这 ...
- 【视频学习】教你如何向领导汇报工作,12堂课成就职场精英
视频下载链接:https://download.csdn.net/download/qq_36749728/20031092 主动汇报工作,抓住表达红利 老板都是喜欢主动汇报工作.主动争取工作的员工, ...
- 【题解】AcWing 第73场周赛题解
A. 数对 题目链接:AcWing 4704. 数对 没啥好说的,题目意思都给你写在脸上了.直接暴力 O ( N 2 ) \mathcal{O}(N^2) O(N2). #include <io ...
- 【题解】AcWing 第71场周赛题解
A. 三个整数 题目链接:AcWing 4621. 三个整数 一眼题,由于保证了一定有解,所以只需要保证 x , y x,y x,y 尽量大, z z z 尽量小即可.即 x x x 取 b b b, ...
- 《老路用得上的商学课》1-10章学习笔记
换个角度去了解这个社会.市场 第一章:机会成本 在经济学里,这些不得不放弃的东西,就是我们为当前选择所付出的机会成本.例如:鱼与熊掌不可兼得.放弃掉的鱼就是你选择熊掌的代价(机会成本). 了解了机会的 ...
- GDUT_排位赛题解报告_第2场_Fence Planning
题目: A. Fence Planning time limit per test1 second memory limit per test256 megabytes inputstandard i ...
最新文章
- 效果广告点击率预估实践:在线学习
- excel操作----主要用于数据库入库
- linux i2c 设备 操作说明
- PowerDesigner教程系列(三)概念数据模型
- Python 中的 if __name__ == __main__ 该如何理解
- 亿级 ELK 日志平台构建实践
- python 中readline 和readlines的区别
- SAP Hybris Commerce里类似ABAP里的透明表设计
- NULL、nil、Nil、NSNull的区别
- element提交图片限制一张_科研SCI论文图片常见问题和错误汇总
- Spring Cloud Config 规范 1
- Docker 禁止被列入美国“实体名单”的国家、企业、个人使用
- [20171113]修改表结构删除列相关问题2.txt
- javascript中concat方法深入理解
- csf格式手机播放器(安卓csf格式播放器)
- windows无法打开添加打印机_PDF-XChange Lite(pdf虚拟打印机)正式版下载-PDF-XChange Lite(pdf虚拟打印机)v8.0.342.0最新版下载...
- oracle 菜单不见了,桌面任务栏不见了 - 电脑任务栏不见了的解决办法 - 安全专题...
- 算法篇-----粒子群算法
- 化学专业有必要学python吗-cnBeta.COM - 中文业界资讯站
- 勒索病毒-特洛伊木马变种