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场相关推荐

  1. 2020 牛客暑期训练营补题(第一场)

    暑假还是不能摸鱼了,尽量每天补一道题. 这里大部分的补题应该都是参考了大佬的题解,所以如果有大佬看到了自己的解法,请多多包涵. 第一场 A题 题目描述 题目思路 代码 F题 I题 J题 A题 题目描述 ...

  2. 2020多校补题第四场

    1011: 瞎算一通过了 看题解发现竟然直接输出就行 当时的代码: #include<bits/stdc++.h> using namespace std; const double G= ...

  3. 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. ...

  4. GDUT_排位赛题解报告_第5场_A. 唯一排列

    题目 ChenJr给你一个长度为n的排列p,你可以交换其中任意相邻的两个数.现在你需要用最小的交换次数使得这个排列变成升序的序列.现在ChenJr想知道,对于这个排列p,是否存在唯一的交换方式,使得这 ...

  5. 【视频学习】教你如何向领导汇报工作,12堂课成就职场精英

    视频下载链接:https://download.csdn.net/download/qq_36749728/20031092 主动汇报工作,抓住表达红利 老板都是喜欢主动汇报工作.主动争取工作的员工, ...

  6. 【题解】AcWing 第73场周赛题解

    A. 数对 题目链接:AcWing 4704. 数对 没啥好说的,题目意思都给你写在脸上了.直接暴力 O ( N 2 ) \mathcal{O}(N^2) O(N2). #include <io ...

  7. 【题解】AcWing 第71场周赛题解

    A. 三个整数 题目链接:AcWing 4621. 三个整数 一眼题,由于保证了一定有解,所以只需要保证 x , y x,y x,y 尽量大, z z z 尽量小即可.即 x x x 取 b b b, ...

  8. 《老路用得上的商学课》1-10章学习笔记

    换个角度去了解这个社会.市场 第一章:机会成本 在经济学里,这些不得不放弃的东西,就是我们为当前选择所付出的机会成本.例如:鱼与熊掌不可兼得.放弃掉的鱼就是你选择熊掌的代价(机会成本). 了解了机会的 ...

  9. GDUT_排位赛题解报告_第2场_Fence Planning

    题目: A. Fence Planning time limit per test1 second memory limit per test256 megabytes inputstandard i ...

最新文章

  1. 我去!一周内,在闲鱼上被疯狂转了2.6万次的架构课程,现在免费!(限时领)...
  2. 小米MixPath复现之旅
  3. 皮一皮:到底是土还是士...
  4. 计算硼原子的基态能级的java程序
  5. 进一步的去了解正则[一]
  6. python-字符串与字节-0222
  7. 老码农的Java干货资源
  8. oracle fm s,FM连接oracle出错的问题??
  9. kotlin环境配置
  10. C#内存共享通讯示例
  11. axure8 事件改变样式_Axure RP 8 Beta更新介绍(三):部件样式
  12. latex中嵌入视频文件
  13. SharePoint 站点集和子站点数据互相读取
  14. 转载《2020年校招面经心得》
  15. 通过分析周榜前100名专家的博客文章 手把手教你写出爆款文章
  16. excel计算式自动计算_计算macd 分解步骤一步一步详细计算macd 用excel计算macd
  17. 基于国产FPGA 的MIPI硬核应用
  18. 关于MSTP【网络设备互联】
  19. Java 指令与字节码
  20. 25岁西装男子地铁痛哭:成年人的崩溃,都是从缺钱开始的

热门文章

  1. 利用Java实现反向代理
  2. matlab struct结构体变量 横向和纵向数据 (1xn) 和(nx1)
  3. flutter httpClient的封装 dio
  4. java 正则表达式可以改变么_Java中慎用正则表达式!代码性能影响?
  5. FCOS目标检测 paper笔记
  6. 游戏配音中常见的节奏类型
  7. 浏览器调试工具网页性能分析中的使用
  8. 0.1+0.2不等于0.3,微信小程序云开发如何解决JavaScript小数计算精度失准的问题
  9. linux 下卸载torch,在Ubuntu14.04安装torch7笔记
  10. 从零点一开始机器学习之GPU运算性能和CPU性能对比(GPU算力表)