题解:补♂课第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 ...
最新文章
- 我去!一周内,在闲鱼上被疯狂转了2.6万次的架构课程,现在免费!(限时领)...
- 小米MixPath复现之旅
- 皮一皮:到底是土还是士...
- 计算硼原子的基态能级的java程序
- 进一步的去了解正则[一]
- python-字符串与字节-0222
- 老码农的Java干货资源
- oracle fm s,FM连接oracle出错的问题??
- kotlin环境配置
- C#内存共享通讯示例
- axure8 事件改变样式_Axure RP 8 Beta更新介绍(三):部件样式
- latex中嵌入视频文件
- SharePoint 站点集和子站点数据互相读取
- 转载《2020年校招面经心得》
- 通过分析周榜前100名专家的博客文章 手把手教你写出爆款文章
- excel计算式自动计算_计算macd 分解步骤一步一步详细计算macd 用excel计算macd
- 基于国产FPGA 的MIPI硬核应用
- 关于MSTP【网络设备互联】
- Java 指令与字节码
- 25岁西装男子地铁痛哭:成年人的崩溃,都是从缺钱开始的
热门文章
- 利用Java实现反向代理
- matlab struct结构体变量 横向和纵向数据 (1xn) 和(nx1)
- flutter httpClient的封装 dio
- java 正则表达式可以改变么_Java中慎用正则表达式!代码性能影响?
- FCOS目标检测 paper笔记
- 游戏配音中常见的节奏类型
- 浏览器调试工具网页性能分析中的使用
- 0.1+0.2不等于0.3,微信小程序云开发如何解决JavaScript小数计算精度失准的问题
- linux 下卸载torch,在Ubuntu14.04安装torch7笔记
- 从零点一开始机器学习之GPU运算性能和CPU性能对比(GPU算力表)