1. NOJ 71# 大数加法

我死了。。。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>void add(char* a,char* b,char* r);
void subtract (char* a,char* b,char* r);
int main()
{int i;char a[101]="",b[101]="",r[101]="",f1[100]="",f2[100]="";gets(a);gets(b);if (a[0] != '-' && b[0] != '-') {if (strlen(a) <= strlen(b)) {add(a,b,r);} else {add(b,a,r);}}if (a[0] == '-') {for (i=1; i<strlen(a); i++) {f1[i-1]=a[i];}}if (b[0] == '-') {for (i=1; i<strlen(b); i++) {f2[i-1]=b[i];}}if (a[0] == '-' && b[0] == '-') {if (strlen(f1) <= strlen(f2)) {add(f1,f2,r);} else {add(f2,f1,r);}printf("-");}if (a[0] == '-' && b[0] != '-') {if (strlen(f1) <= strlen(b)) {subtract(f1,b,r);} else {subtract(b,f1,r);printf("-");}if (strlen(f1) == strlen(b)) {for (i=0; i<strlen(f1); i++) {if (f1[i] > b[i]) {printf("-");break;}}}}if (a[0] != '-' && b[0] == '-') {if (strlen(f2) <= strlen(a)) {subtract(f2,a,r);} else {subtract(a,f2,r);}if (strlen(f2) == strlen(a)) {for (i=0; i<strlen(f2); i++) {if (f2[i] > a[i]) {printf("-");break;}}}}for (i=100; i>=0; i--) {if (r[i]=='\0' && r[i-1]=='0') r[i-1]='\0';}for (i=100; i>=0; i--) {if (r[i] != '\0') printf("%c",r[i]);}return 0;
}void add(char* a,char* b,char* r)
{int i,L1,L2,delta;i=0;//printf("%d\n\n",atoi(a[0]));while (a[i] != '\0') {a[i]-=48;i++;}L1=i;i=0;while (b[i] != '\0') {b[i]-=48;i++;}L2=i;delta=abs(L1-L2);int p=0;for (i=L1; i>0; i--) {//sprintf(r[p],"%d",a[i]+b[i+delta])%10);r[p]=(a[i-1]+b[i+delta-1]);//r[p+1]+=(int)((a[i]+b[i+delta])/10);//printf("%c\n",r[p]+48);p++;}for (i=delta; i>0; i--) {r[p]=b[i-1];//r[p+1]+=(int)((r[i]+b[i-1])/10);//printf("%c\n",r[p]+48);p++;}for (i=0; i<L2+1; i++) {if (r[i]>9) {r[i]%=10;r[i+1]++;}}/*if (r[strlen(b)+1] != '\0') {r[strlen(b)+1]+=48;}*/for (i=0; i<L2; i++) {r[i]+=48;}
}void subtract (char* a,char* b,char* r)
{int i,L1,L2,delta;i=0;//printf("%d\n\n",atoi(a[0]));while (a[i] != '\0') {a[i]-=48;i++;}L1=i;i=0;while (b[i] != '\0') {b[i]-=48;i++;}L2=i;delta=abs(L1-L2);int p=0;for (i=L1; i>0; i--) {r[p]=b[i+delta-1]-a[i-1];p++;}for (i=delta; i>0; i--) {r[p]=b[i-1];p++;}for (i=0; i<L2; i++) {if (r[i]<0) {r[i]+=10;r[i+1]--;}}for (i=0; i<L2; i++) {r[i]+=48;}
}

以上是亲测不通过的代码 /托腮
奋战七个小时,样例都过不了的(好吧样例终于过了) /大哭
结果莫名其妙就AC了?!假的NOJ吧 /笑哭

  1. NOJ 75# 大数乘法

经历了大数加法的磨砺,这次似乎顺利了不少? /笑哭
感觉这次的程序没有Bug呢 /我最美

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define L1 strlen(a)
#define L2 strlen(b)void multiplication(char* a,char* b,char* r);
int main()
{int i;char a[101]="",b[101]="",r[1000]="",f1[100]="",f2[100]="";gets(a);gets(b);if (a[0] != '-' && b[0] != '-') {if (strlen(a) <= strlen(b)) {multiplication(a,b,r);} else {multiplication(b,a,r);}}if (a[0] == '-') {for (i=1; i<strlen(a); i++) {f1[i-1]=a[i];}}if (b[0] == '-') {for (i=1; i<strlen(b); i++) {f2[i-1]=b[i];}}if (a[0] == '-' && b[0] == '-') {if (strlen(f1) <= strlen(f2)) {multiplication(f1,f2,r);} else {multiplication(f2,f1,r);}printf("-");}if (a[0] == '-' && b[0] != '-') {if (strlen(f1) <= strlen(b)) {multiplication(f1,b,r);} else {multiplication(b,f1,r);}printf("-");}if (a[0] != '-' && b[0] == '-') {if (strlen(f2) <= strlen(a)) {multiplication(f2,a,r);} else {multiplication(a,f2,r);}printf("-");}for (i=100; i>=0; i--) {if (r[i]=='\0' && r[i-1]=='0') r[i-1]='\0';}for (i=100; i>=0; i--) {if (r[i] != '\0') printf("%c",r[i]);}return 0;
}void multiplication(char* a,char* b,char* r)
{int i,j,delta;int tr[1000]={0};i=0;while (a[i] != '\0') {a[i]-=48;i++;}i=0;while (b[i] != '\0') {b[i]-=48;i++;}int p=0;for (i=L1-1; i>=0; i--) {for (j=L2-1; j>=0; j--) {tr[p]+=(a[i]*b[j]);p++;}p=L1-i;}for (i=0; i<1000; i++) {if (tr[i]>9) {int temp=tr[i];tr[i]%=10;tr[i+1]+=temp/10;}}for (i=999; i>=0; i--) {if (tr[i] != 0) {break;}}for (; i>=0; i--) {r[i]=tr[i]+48;}
}
  1. NOJ 76# 大数减法

啊哈哈哈哈,做这题的时候终于把心心念念的大数加法的Bug修复啦~
借助了一个int数组来做计算呢,然后在判断把哪些int t(emp)r(esult)还给char r(esult)的时候就好控制啦~

#include <stdio.h>
#include <stdlib.h>
#include <string.h>void add(char* a,char* b,char* r);
void subtract(char* a,char* b,char* r);
int main()
{int i;char a[101]="",b[101]="",r[101]="",f1[100]="",f2[100]="";gets(a);gets(b);if (a[0] != '-' && b[0] != '-') {if (strlen(a) < strlen(b)) {subtract(a,b,r);printf("-");} else {subtract(b,a,r);}if (strlen(a) == strlen(b)) {for (i=0; i<strlen(a); i++) {if (a[i] < b[i]) {printf("-");break;}}}}if (a[0] == '-') {for (i=1; i<strlen(a); i++) {f1[i-1]=a[i];}}if (b[0] == '-') {for (i=1; i<strlen(b); i++) {f2[i-1]=b[i];}}if (a[0] == '-' && b[0] == '-') {if (strlen(f1) < strlen(f2)) {subtract(f1,f2,r);printf("-");} else {subtract(f2,f1,r);}if (strlen(f1) == strlen(f2)) {for (i=0; i<strlen(f1); i++) {if (f1[i] > f2[i]) {printf("-");break;}}}}if (a[0] == '-' && b[0] != '-') {if (strlen(f1) <= strlen(b)) {add(f1,b,r);} else {add(b,f1,r);}printf("-");}if (a[0] != '-' && b[0] == '-') {if (strlen(f2) <= strlen(a)) {add(f2,a,r);} else {add(a,f2,r);}}for (i=100; i>=0; i--) {if (r[i]=='\0' && r[i-1]=='0') r[i-1]='\0';}for (i=100; i>=0; i--) {if (r[i] != '\0') printf("%c",r[i]);}return 0;
}void add(char* a,char* b,char* r)
{int i,L1,L2,delta;int tr[101]={0};i=0;while (a[i] != '\0') {a[i]-=48;i++;}L1=i;i=0;while (b[i] != '\0') {b[i]-=48;i++;}L2=i;delta=abs(L1-L2);int p=0;for (i=L1; i>0; i--) {tr[p]=(a[i-1]+b[i+delta-1]);p++;}for (i=delta; i>0; i--) {tr[p]=b[i-1];p++;}for (i=0; i<L2+1; i++) {if (tr[i]>9) {tr[i]%=10;tr[i+1]++;}}for (i=100; i>=0; i--) {if (tr[i] != 0) {break;}}for (; i>=0; i--) {r[i]=tr[i]+48;}
}void subtract(char* a,char* b,char* r)
{int i,L1,L2,delta;int tr[101]={0};i=0;while (a[i] != '\0') {a[i]-=48;i++;}L1=i;i=0;while (b[i] != '\0') {b[i]-=48;i++;}L2=i;delta=abs(L1-L2);int p=0;for (i=L1; i>0; i--) {tr[p]=b[i+delta-1]-a[i-1];p++;}for (i=delta; i>0; i--) {tr[p]=b[i-1];p++;}for (i=0; i<L2; i++) {if (tr[i]<0) {tr[i]+=10;tr[i+1]--;}}for (i=100; i>=0; i--) {if (tr[i] != 0) {break;}}for (; i>=0; i--) {r[i]=tr[i]+48;}
}
  1. NOJ 77# 行程编码压缩算法

一脸懵逼啊

这俩莫名其妙的1是个啥 /沉思
答案跟样例的输出根本不一样……好吧,另外找了个答案来:

#include <stdio.h>
#include <string.h>
int main()
{char str[1024] = {'\0'};char result[1024] = {'\0'};int number[1024] = {0};scanf("%s", str);int i;char c = '\0';int flag =0;int nums = 1;int j=0, k=0;for (i=0; i<strlen(str); i++){if (str[i] == str[i+1]) //前后两者相同{if (nums==9) //当前达到9{result[j++] = str[i];number[k++] = nums;nums = 0;}nums ++;}else{result[j++] = str[i];number[k++] = nums;nums = 1;}}for (i=0; i<j; i++){if (number[i]!=1){if (flag==1){printf("1");flag = 0;}printf("%d%c", number[i], result[i]);}else{if (flag == 0){printf("1");flag = 1;}if (result[i]=='1'){printf("11");}else{printf("%c", result[i]);}}}return 0;
}

看晕了,还是不理解 ε=(´ο`*)))

~
~
~

很好,我终于认清了现实。
这篇 Week 7 其实动笔于11月8日,到今天已经有12天的时光了。毫不夸张地说,在这期间我没有将它记起来哪怕一次,直到今天我再次想到要找一个地方写题解。这已充分表明了,“丝雨学姐小灶班”这个系列已经不再有存在的必要了。其实,这个系列早在推出 Week 4 便已经名存实亡了。我所上传到小灶群中的作业只有 W1~W3 ,在那之后,它便单纯地成为了我自己做题时写题解的树洞。

Well, well, well. (2018.11.26)

一路走来,有你们的陪伴(特别感谢周放、周放、和周放等观众),我感到很幸福。
好的,那让我们下个系列再见吧!再会!

丝雨学姐小灶班——Week7相关推荐

  1. 丝雨学姐小灶班——Week 2

    P1085 不高兴的津津 这题让我发现了一个神奇的东西--break.原来还有跳出循环这种操作的2333. 这题大体上还是好理解的,正好试着把 Week 1 里自己瞎捣鼓的数组用了一下(后来发现就是多 ...

  2. 丝雨学姐小灶班——Week 3

    国庆假期首尾抢刷NOJ 2333 保留小数位数 double a,b,c;scanf("%lf %lf %lf",&a,&b,&c);printf(&quo ...

  3. 丝雨学姐小灶班——Week 1

    The Story is Just Beginning P1000 超级玛丽游戏 用"xxx\n"分别输出各行内容即可 P1001 A+B Problem Hello, World ...

  4. 丝雨学姐小灶班——Week 5

    听说我已经进入NOJ的水题区了呢 /斜眼笑/斜眼笑/斜眼笑 NOJ 26# 羊羊聚会 扩展欧几里得问题---- /挠头 先上一段欧几里得问题的证明: gcd(a,b) = gcd(b,a mod b) ...

  5. 丝雨学姐小灶班——Week 6

    NOJ 61# 源程序添加行号 卡了足足一个星期才开始做文件这一季的题目,真的是心累 直接上新学到的函数: FILE * fopen(const char * path,const char * mo ...

  6. 丝雨学姐小灶班——Week 4

    NOJ 27# 粒子裂变 不用递归即可解决:用中间变量暂时储存上一时刻的数据:各步骤之间的逻辑关系 #include <iostream> using namespace std;int ...

  7. 辽大 计算机二级培训,辽宁大学-中软国际校企合作班 学长学姐对你说~第二弹...

    辽宁大学与中软国际有着10余年的校企合作经历.每一年通过辽宁大学-中软国际校企合作班联合培养后,就业入职各大IT企业的学生数量,都在不断的增加.上一次学长学姐对你说,让学弟学妹们对于我们辽宁大学-中软 ...

  8. 考研复试班学姐揭秘考研复试中导师最爱问的问题

    原文链接// https://tm.qiaoqiaoxue.cn/article/105 1.请您做一个简单的自我介绍 并且在介绍自己之前一定要做好充分的准备,因为您的经历比您的名字更重要.最重要的是 ...

  9. 5分绩点转4分_作为一名大学生,如何规划4年大学生活?学姐:建议从这5点做起...

    导语:作为一名大学生,如何规划4年大学生活?学姐:建议从这5点做起 进入大学后,同学们会拥有更多可自由支配的时间.大学课余时间多,家长不在身边,老师又不管.同学们可以说是彻底自由了.但是世界上没有绝对 ...

最新文章

  1. HtmlParser中的各种Filter(1)
  2. QT的QScriptable类的使用
  3. Apple Mac OS X每日一技巧025:小学算术好的快帮我⋯把Spotlight当计算器,结果杯具了...
  4. 今天终于可以正常下班了
  5. Pytorch torch.manual_seed()的简单用法
  6. 中国开启开源新纪元!
  7. c++用数组初始化向量_用C ++初始化向量
  8. 华三ap设置无线服务器,H3C无线控制器实现Remote AP功能典型配置举例(V7)
  9. git pull checkout后文件权限变更
  10. 【算法笔记】逆元的求解
  11. 计算机组成王道考研ppt,2022计算机408考研-计算机组成原理课件-第一章.pdf
  12. 通信原理6.2-6.4码型及码间串扰
  13. ros打开笔记本电脑的摄像头
  14. 伯努利公式怎么推导的
  15. 光场相机微透镜阵列排布方式以及其填充率比较
  16. USYD悉尼大学DATA 2002 【R语言学习2】在 Tidyverse 中与数据通信 (Communicating with Data in the Tidyverse)
  17. 架构演进|研究mvp到mvvm(传统架构mvvm和Jetpack下的区别)
  18. 基于Java的实时通信软件的设计(类似微信)
  19. elastic-search学习笔记
  20. 【NG-ZORRO、Angular】日期选择框时间段nz-range-picker设置开始结束时间00:00:00~23:59:59

热门文章

  1. php获取路由器ip地址吗,路由器如何查看IP地址? TP-Link路由器查看IP地址的详细图解...
  2. matlab灰度变换函数imadjust、stretchlim
  3. python uiautomator2 环境搭建和基本使用
  4. PDF格式表格数据转换及提取
  5. 阿里2017前端实习生笔试编程第一题
  6. 时间戳转为年月日时分秒格式, 日期时间比较
  7. HDU 1848 SG函数
  8. c语言递归函数头文件,C语言函数,递归,功能模块头文件(习题)
  9. fzyjojP2963 -- [校内训练20161227]疫情控制问题
  10. 中国最大统计学与大数据盛会召开在即,顶级专家学者开启人工智能“超脑”风暴...