-
个人简介
(https://mmbiz.qpic.cn/mmbiz_gif/NS3AiclkdIQ0JibjMpLBbibW6tAw9Sj4jvCHtHeKHiaPibrJ2Y4gUzb04lwWPuXWyZJezyibdhpaTY6Suxe5YlCLKOlQ/640?wx_fmt=gif&wxfrom=5&wx_lazy=1)滑稽http://lvmaojun.com/huaji
生是中国人,死是中国魂。此生不悔入中华,来世还做中国人
#include<bits/stdc++.h>
using namespace std;
int main() {
string s1,s2; int a[51000]= {0},b[51000]= {0},la,lb; cin>>s1>>s2; la=s1.length(); lb=s2.length(); if(la<lb||la==lb&&s1<s2) { swap(s1,s2); swap(la,lb); cout<<'-'; } for(int i=0; i<la; i++)a[i]=(int)s1[la-i-1]-48; for(int i=0; i<lb; i++)b[i]=(int)s2[lb-i-1]-48; int lc,x=0,c[51000]; lc=max(la,lb); for(int i=0; i<lc; i++) { c[i]=a[i]-b[i]-x; if(c[i]<0){ x=1; c[i]+=10; } else{ x=0; } } while(c[lc-1]==0&&lc>1){ lc--; } for(int i=lc-1; i>=0; i--) { cout<<c[i]; } return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main() {
char s1[510]= {0},s2[510]= {0};//定一s1s2病初始化 int a[510]= {0},b[510]= {0},la,lb;//定一s1s2数字和为数 cin>>s1>>s2;//输入 la=strlen(s1); lb=strlen(s2);//求为数 for(int i=0; i<la; i++)a[i]=(int)s1[la-i-1]-48; for(int i=0; i<lb; i++)b[i]=(int)s2[lb-i-1]-48;//带劲数字 int lc,x=0,c[510];//定一和的为数、数字、进位情况 lc=max(la,lb);//确定和为数 for(int i=0; i<lc; i++) { c[i]=a[i]+b[i]+x; x=c[i]/10; c[i]%=10; } if(x) c[lc++]++; for(int i=lc-1; i>=0; i--) { cout<<c[i]; } return 0;
}
1.数据类型:
(1)整数类:short;int;long;long long; (unsigned) (2)浮点型:float;double; (3)其他类:bool;char;string;struct(用于定义数据类型); 2.变量(数组、函数、结构体等) 命名规则:
(1)只能有字母、数字和_; (2)数字不能开头; (3)名称严格区分大小写,且不能重复; 3.编程中的结构:
(1)顺序结构; (2)分支结构: if(){ } else { } switch(){ } ?: (3)循环结构: while(){ } do{ }while() for(;;) { } (4)循环跳转: break 从break语句开始,退出当前循环 continue 从continue语句开始,跳过本次循环 4.数组:一个存储多个数据的变量的集合。
(1)数组下标:从0开始,到size()-1结束. (2)除char[]外,不能直接输入和输出 (3)初始化的方式a[]={0} ; (4)二维数组的定义:如果一维数组中的元素又是一个数组,先行后列。 5.字符数组:char a[101] ;
(1)求长度: strlen(a) (2)带空格的输入:cin.getline(a,101); (3) 字符串连接:strcat(a,b); 将B连接在A的后面 字符串复制:strcpy(a,b); 将B复制给A 6.字符串string:string a;
(1)求长度: a.length(); (2)带空格的输入:getline(cin,a); (3) 字符串连接:a+=b; 将B连接在A的后面 字符串复制:a=b; 将B复制给A 字符串截取:s=s.substr(a,b) ; 从下标a开始截取b个字符 字符串插入:s.insert(a,b) ; 在下标a前插入字符串b 字符串查找:s.find(a); 在字符串s中查找字符串a,找到返回第一位字符的下标, 未找到返回unsigned long long的最大值 7.函数:
(1)包含:函数名、函数的参数及数据类型、函数的返回值类型(void)、函数体 (2)常用函数:max(a,b); min(a,b); 要求a,b数据类型相同 整数:abs(a); 浮点数:fabs(a); 数据类型区别 sqrt(a); pow(a,b); 返回值为double类型 sort(a,a+n); 注意下标区别 swap(a,b); 无特殊要求。 memset(a,0,sizeof(a)); 数组初始化 (3)自定义函数: (1)质数判断:时间复杂度为 根号n。 int zs(int x){ if(x<=2) return 0; for(int i=2;ii<=x;i++) if(x%i==0) return 0; return 1; } (2)数字翻转 int fz(int x){ int a=0; while(x) { a=a10+x%10; x/=10; } return a;} (3)进制转换 (十进制转二进制:递归实现) void zh(int x) { if(x==0) return ; zh(x/2); cout<<x%2; } (4)递归 (fib) int fib(int x){ if(x<=2) return 1; return fib(x-1)+fib(x-2); } 8.进制转换与原反补码
(1)进制转换:模除法。 (2)特殊的进制转换: (1)二进制与八进制: 二转八:二进制从最低位开始每3位转换为一个八进制的1位,顺序书写即可。 八转二: 八进制的每位转换成一个3位的二进制数,顺序书写即可。 (2)二进制与十六进制: 二转十六:二进制从最低位开始每4位转换为一个十六进制的1位,顺序书写即可。 十六转二:十六进制的每位转换成一个4位的二进制数,顺序书写即可。 (3) 原码:用最高位表示数字的符号,0为正数,1为负数 反码:正数不变,负数除符号位外,全部取反 补码:正数不变,负数为反码+1 9.运算优先级
() 大于! ++ -- 大于 * / % 大于 + - 大于 >> << 大于 > >= < <= 大于 == != 大于 && 大于 || 大于 = += -=...
10.输入与输出
(1)cin 与 cout iostream (2)scanf 与 printf cstdio (3)速度:scanf/printf快于cin/cout '\n'快于endl (4) %d-int/bool %f-float %lf-double %lld-long long %c-char %s-char[] %u-unsigned int %llu-unsigned long long %5d-整数至少5位场宽,右对齐 %-5d-整数至少5位场宽,左对齐 %5s-字符串场宽至少为5,右对齐 %-5s-字符串场宽至少为5,左对齐 %5.3s-字符串从右往左截取3位,场宽5,右对齐 %-5.3s-字符串从右往左截取3位,场宽5,左对齐 %5.3lf-保留3位,场宽5,右对齐 %-5.3lf-保留3位,场宽5,左对齐 iomanip cout<<fixed<<setprecision(3)<<a; 保留3位小数 11.位运算:
(1) & 二进制中,有0则为0 。 if(x%21)相当于 if(x&11) (2) | 二进制中,有1则为1 。 (3) ^ 二进制中,相同为0,不同为1 。a^a=0 a^0=a (4) ~ ~a=-a-1 (5) >> a>>=1相当于a/=2 (6) << a<<=1相当于a*=2 12.排序:
(1)冒泡:for(i 表示轮) for(j 表示下标) 比较与交换 (2)选择:for(i 表示轮) 找最小(大)值, 与第i个进行交换 (3)插入:for(i 表示轮) 把当前元素依次向前对比和交换,比其小则停止 (4)桶排:用数组下标进行排序的方式 (5)快排:sort(a,a+n) (6)结构体排序:使用struct 和 sort进行排序,需要自定义cmp函数 13.高精度:
(1)加法和减法:用数组的每一位存数字的每一位。 (2)步骤: 存储-转换-计算-特判-输出 14.递推与递归:
(1)递推用循环、递归用函数 (2)递推关系与初始条件 15.文件流
(1) freopen("1.in","r",stdin); (2) freopen("1.out","w",stdout); 1.数据类型: (1)整数类:short;int;long;long long; (unsigned) (2)浮点型:float;double; (3)其他类:bool;char;string;struct(用于定义数据类型); 2.变量(数组、函数、结构体等) 命名规则:
(1)只能有字母、数字和_; (2)数字不能开头; (3)名称严格区分大小写,且不能重复; 3.编程中的结构:
(1)顺序结构; (2)分支结构: if(){ } else { } switch(){ } ?: (3)循环结构: while(){ } do{ }while() for(;;) { } (4)循环跳转: break 从break语句开始,退出当前循环 continue 从continue语句开始,跳过本次循环 4.数组:一个存储多个数据的变量的集合。
(1)数组下标:从0开始,到size()-1结束. (2)除char[]外,不能直接输入和输出 (3)初始化的方式a[]={0} ; (4)二维数组的定义:如果一维数组中的元素又是一个数组,先行后列。 5.字符数组:char a[101] ;
(1)求长度: strlen(a) (2)带空格的输入:cin.getline(a,101); (3) 字符串连接:strcat(a,b); 将B连接在A的后面 字符串复制:strcpy(a,b); 将B复制给A 6.字符串string:string a;
(1)求长度: a.length(); (2)带空格的输入:getline(cin,a); (3) 字符串连接:a+=b; 将B连接在A的后面 字符串复制:a=b; 将B复制给A 字符串截取:s=s.substr(a,b) ; 从下标a开始截取b个字符 字符串插入:s.insert(a,b) ; 在下标a前插入字符串b 字符串查找:s.find(a); 在字符串s中查找字符串a,找到返回第一位字符的下标, 未找到返回unsigned long long的最大值 7.函数:
(1)包含:函数名、函数的参数及数据类型、函数的返回值类型(void)、函数体 (2)常用函数:max(a,b); min(a,b); 要求a,b数据类型相同 整数:abs(a); 浮点数:fabs(a); 数据类型区别 sqrt(a); pow(a,b); 返回值为double类型 sort(a,a+n); 注意下标区别 swap(a,b); 无特殊要求。 memset(a,0,sizeof(a)); 数组初始化 (3)自定义函数: (1)质数判断:时间复杂度为 根号n。 int zs(int x){ if(x<=2) return 0; for(int i=2;ii<=x;i++) if(x%i0) return 0; return 1; } (2)数字翻转 int fz(int x){ int a=0; while(x) { a=a10+x%10; x/=10; } return a;} (3)进制转换 (十进制转二进制:递归实现) void zh(int x) { if(x0) return ; zh(x/2); cout<<x%2; } (4)递归 (fib) int fib(int x){ if(x<=2) return 1; return fib(x-1)+fib(x-2); } 8.进制转换与原反补码
(1)进制转换:模除法。 (2)特殊的进制转换: (1)二进制与八进制: 二转八:二进制从最低位开始每3位转换为一个八进制的1位,顺序书写即可。 八转二: 八进制的每位转换成一个3位的二进制数,顺序书写即可。 (2)二进制与十六进制: 二转十六:二进制从最低位开始每4位转换为一个十六进制的1位,顺序书写即可。 十六转二:十六进制的每位转换成一个4位的二进制数,顺序书写即可。 (3) 原码:用最高位表示数字的符号,0为正数,1为负数 反码:正数不变,负数除符号位外,全部取反 补码:正数不变,负数为反码+1 9.运算优先级
() 大于! ++ -- 大于 * / % 大于 + - 大于 >> << 大于 > >= < <= 大于 == != 大于 && 大于 || 大于 = += -=...
10.输入与输出
(1)cin 与 cout iostream (2)scanf 与 printf cstdio (3)速度:scanf/printf快于cin/cout '\n'快于endl (4) %d-int/bool %f-float %lf-double %lld-long long %c-char %s-char[] %u-unsigned int %llu-unsigned long long %5d-整数至少5位场宽,右对齐 %-5d-整数至少5位场宽,左对齐 %5s-字符串场宽至少为5,右对齐 %-5s-字符串场宽至少为5,左对齐 %5.3s-字符串从右往左截取3位,场宽5,右对齐 %-5.3s-字符串从右往左截取3位,场宽5,左对齐 %5.3lf-保留3位,场宽5,右对齐 %-5.3lf-保留3位,场宽5,左对齐 iomanip cout<<fixed<<setprecision(3)<<a; 保留3位小数 11.位运算:
(1) & 二进制中,有0则为0 。 if(x%21)相当于 if(x&11) (2) | 二进制中,有1则为1 。 (3) ^ 二进制中,相同为0,不同为1 。a^a=0 a^0=a (4) ~ ~a=-a-1 (5) >> a>>=1相当于a/=2 (6) << a<<=1相当于a*=2 12.排序:
(1)冒泡:for(i 表示轮) for(j 表示下标) 比较与交换 (2)选择:for(i 表示轮) 找最小(大)值, 与第i个进行交换 (3)插入:for(i 表示轮) 把当前元素依次向前对比和交换,比其小则停止 (4)桶排:用数组下标进行排序的方式 (5)快排:sort(a,a+n) (6)结构体排序:使用struct 和 sort进行排序,需要自定义cmp函数 13.高精度:
(1)加法和减法:用数组的每一位存数字的每一位。 (2)步骤: 存储-转换-计算-特判-输出 14.递推与递归:
(1)递推用循环、递归用函数 (2)递推关系与初始条件 15.文件流
(1) freopen("1.in","r",stdin); (2) freopen("1.out","w",stdout);
简单计算器
题目描述
一个最简单的计算器,支持
+,-,*,/
四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int
表示的范围。然而:- 如果出现除数为 的情况,则输出:
Divided by zero!
。 - 如果出现无效的操作符(即不为
+,-,*,/
之一),则输出:Invalid operator!
。 - 除号表示整除,结果向 0 取整。
输入格式
输入只有一行,共有三个参数,其中第 个参数为整数,第 个参数为操作符
(+,-,*,/)
。输出格式
输出只有一行,一个整数,为运算结果。然而:
- 如果出现除数为 的情况,则输出:
Divided by zero!
。 - 如果出现无效的操作符(即不为
+,-,*,/
之一),则输出:Invalid operator!
。
样例 #1
样例输入 #1
1 2 +
样例输出 #1
3
样例 #2
样例输入 #2
2 4 *
样例输出 #2
8
样例 #3
样例输入 #3
5 0 /
样例输出 #3
Divided by zero!
语文老师一回头, 鲁迅甘为孺子牛; 数学老师一回头, 六元六次都能求; 英语老师一回头, Sorry加上三克油; 物理老师一回头, 一根杠杆撬地球; 化学老师一回头, 二氧化碳变汽油; 劳动老师一回头, 破铜烂铁来走秀; 体育老师一回头, 黛玉也能踢足球; 政治老师一回头, 全班同学都梦游; 美术老师一回头, 蒙娜丽莎也风流; 音乐老师一回头, 贝多芬呀也不牛; 信息老师一回头, 带着学生玩网游; 戏剧老师一回头,放学要被校长留! 堆结构 分治做得像枚举
暴力枚举数第一
数据结构干瞪眼
怒刷水题找信心
涨姿势也不容易
考试一来全懵逼
...... 爆零是一种宿命
枚举是一种思想
打表是一种勇气
骗分是一种日常
刷题是一种出路
AC是一种原谅
AK是一种梦想
搜索是一种信仰
剪枝是一种精神
弃赛是一种颓废 吊打是一种必然 进队是一种奢望 AB站是一种解放。 .....
暴力出奇迹,骗分过样例。
数学先打表,DP看运气。
穷举TLE,递推UKE。
模拟MLE,贪心还CE。
想要骗到分,就要有方法。 图论背模板,数论背公式。
动规背方程,高精背代码。
如果都没背,干脆输样例
滑稽
在洛谷, 享受 Coding 的欢乐
关于洛谷 | 帮助中心 | 用户协议 | 联系我们 小黑屋 | 陶片放逐 | 社区规则 | 招贤纳才 Developed by the Luogu Dev Team 2013-2022 , © 洛谷 增值电信业务经营许可证 沪B2-20200477 沪ICP备18008322号 All rights reserved.
- 如果出现除数为 的情况,则输出:
-
最近活动
This person is lazy and didn't join any contests or homework. -
最近编写的题解
This person is lazy and didn't write any solutions.