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. excel操作----主要用于数据库入库
  3. linux i2c 设备 操作说明
  4. PowerDesigner教程系列(三)概念数据模型
  5. Python 中的 if __name__ == __main__ 该如何理解
  6. 亿级 ELK 日志平台构建实践
  7. python 中readline 和readlines的区别
  8. SAP Hybris Commerce里类似ABAP里的透明表设计
  9. NULL、nil、Nil、NSNull的区别
  10. element提交图片限制一张_科研SCI论文图片常见问题和错误汇总
  11. Spring Cloud Config 规范 1
  12. Docker 禁止被列入美国“实体名单”的国家、企业、个人使用
  13. [20171113]修改表结构删除列相关问题2.txt
  14. javascript中concat方法深入理解
  15. csf格式手机播放器(安卓csf格式播放器)
  16. windows无法打开添加打印机_PDF-XChange Lite(pdf虚拟打印机)正式版下载-PDF-XChange Lite(pdf虚拟打印机)v8.0.342.0最新版下载...
  17. oracle 菜单不见了,桌面任务栏不见了 - 电脑任务栏不见了的解决办法 - 安全专题...
  18. 算法篇-----粒子群算法
  19. 化学专业有必要学python吗-cnBeta.COM - 中文业界资讯站
  20. 勒索病毒-特洛伊木马变种

热门文章

  1. 国外投资哪些域名比较受欢迎?
  2. 【IMRaD】如何“科学地”写一篇科学研究论文
  3. 曙光服务器制作raid文档,曙光服务器做RAID步骤
  4. vscode中搭建Golang开发环境(图文并茂)
  5. 哈尔滨工业大学雨课堂(学堂在线)自动观看mooc
  6. 二本大一新生拒绝摆烂,2个月后的觉醒
  7. [STM32] Mac开发STM32之Makefile
  8. word 横向合并单元
  9. 【陈工笔记】# latex中,“_”如何写? #
  10. div固定在浏览器顶部