CyberJ_VII level
获赞
0
粉丝
0
关注
0
看过 TA
1
哈尔滨理工大学
2028
IP属地:黑龙江
ai领域大神
私信
关注
今天 14:37
哈尔滨理工大学
学校和 yyy 的家之间的距离为 s 米,而 yyy 以 v 米每分钟的速度匀速走向学校。在上学的路上,yyy 还要额外花费 10 分钟的时间进行垃圾分类。学校要求必须在上午 8:00 到达,请计算在不迟到的前提下,yyy 最晚能什么时候出门。由于路途遥远,yyy 可能不得不提前一点出发,但是提前的时间不会超过一天。输入格式一行两个正整数 s,v,分别代表路程和速度。输出格式输出一个 24 小时制下的时间,代表 yyy 最晚的出发时间。输出格式为 HH:MM,分别代表该时间的时和分。必须输出两位,不足前面补 0。#include <iostream>#include <cstdio>#include<iomanip>#include<cmath>using namespace std;int main(){double s = 0;int v = 0;cin >> s >> v;int t = ceil(double(s / v)) + 10;int t1 = 480 - t;if (t1 < 0) {t1 += 24 * 60;}int H = t1 / 60;int M = t1 % 60;cout << setw(2) <<setfill('0') << H << ":" << setw(2) << setfill('0') << M << endl;return 0;}
0 点赞 评论 收藏
分享
今天 14:32
哈尔滨理工大学
题目描述 高精度减法。输入格式两个整数 a,b(第二个可能比第一个大)。输出格式结果(是负数要输出负号)。输入输出样例输入 #1复制21输出 #1复制1说明/提示20% 数据 a,b 在 long long 范围内;100% 数据 0<a,b≤1010086。#include <iostream>#include<vector>#include<algorithm>#include<cmath>#include<iomanip>#include<queue>using namespace std;const int N = 1e6 + 10;int a[N], b[N], c[N];int lena, lenb, lenc;void gj(int a[], int b[], int c[]) {for (int i = 0; i < lena; i++) {c[i] += a[i] - b[i];if (c[i] < 0) {c[i + 1] -= 1;c[i] += 10;}}}int main() {string a1, b1;cin >> a1 >> b1;bool change = false;if (a1.size() < b1.size()) {swap(a1, b1);change = true;}if (!change){if (a1.size() == b1.size() && a1 < b1) {swap(a1, b1);change = true;}}lena = a1.size();lenb = b1.size();for (int i = 0; i < lena; i++) {a[lena - 1 - i] = a1[i] - '0';}for (int i = 0; i < lenb; i++) {b[lenb - 1 - i] = b1[i] - '0';}gj(a,b,c);while (lena > 1 && c[lena - 1] == 0) {lena--;}if (change) {cout << "-";}for (int i = lena - 1; i >= 0; i--) {cout << c[i];}return 0;}
0 点赞 评论 收藏
分享
今天 14:32
哈尔滨理工大学
高精度加法,相当于 a+b problem,不用考虑负数。输入格式分两行输入。a,b≤10500。输出格式输出只有一行,代表 a+b 的值。输入输出样例输入 #1复制11输出 #1复制2输入 #2复制10019099输出 #2复制10100说明/提示20% 的测试数据,0≤a,b≤109;40% 的测试数据,0≤a,b≤1018。#include <iostream>#include<vector>#include<algorithm>#include<cmath>#include<iomanip>#include<queue>using namespace std;string a, b;int len = 0;int a1[5000], b1[5000], c1[5000];int carry = 0;void qh(string a, string b) {for (int i = a.size() - 1; i >= 0; i--) {a1[a.size()-1-i] = a[i] - '0';}for (int i = b.size() - 1; i >= 0; i--) {b1[b.size()-1-i] = b[i] - '0';}len = max(a.size(), b.size());for (int i = 0; i < len; i++) {c1[i] = a1[i] + b1[i] + carry;carry = c1[i] / 10;c1[i] %= 10;if (i == len - 1 && carry > 0) {len++;}}}int main() {cin >> a >> b;qh(a, b);for (int i = len; i >=0; i--) {if (i == len && c1[i] == 0) {}else {cout << c1[i];}}return 0;}
0 点赞 评论 收藏
分享
今天 14:27
哈尔滨理工大学
高精度乘法模板题。题目描述给出两个非负整数,求它们的乘积。输入格式输入共两行,每行一个非负整数。输出格式输出一个非负整数表示乘积。输入输出样例输入 #1复制12输出 #1复制2说明/提示每个非负整数不超过 102000。#include <iostream>#include<vector>#include<algorithm>#include<cmath>#include<iomanip>#include<queue>using namespace std;int a[1000000], b[1000000], c[1000000];string a1, b1;int len = 0;void ChengJ(string a1, string b1) {for (int i = 0; i < a1.size(); i++) {a[a1.size() - 1 - i] = a1[i] - '0';}for (int i = 0; i < b1.size(); i++) {b[b1.size() - 1 - i] = b1[i] - '0';}len = a1.size() + b1.size();for (int i = 0; i < a1.size(); i++) {for (int j = 0; j < b1.size(); j++) {c[i + j] += a[i] * b[j];c[i + j + 1] += c[i + j] / 10;c[i + j] %= 10;}}}int main() {cin >> a1 >> b1;if ((a1.size() == 1 && a1[0] == '0') || (b1.size() == 1 && b1[0] == '0')) {cout << 0;return 0;}ChengJ(a1, b1);for (int i = len-1; i >= 0; i--) {if (i == len-1 && c[i] == 0) {continue;}else {cout << c[i];}}return 0;}
0 点赞 评论 收藏
分享
今天 14:25
哈尔滨理工大学
0 点赞 评论 收藏
分享
今天 14:10
哈尔滨理工大学
每一本正式出版的图书都有一个 ISBN 号码与之对应,ISBN 码包括 9 位数字、1 位识别码和 3 位分隔符,其规定格式如 x-xxx-xxxxx-x,其中符号 - 就是分隔符(键盘上的减号),最后一位是识别码,例如 0-670-82162-4就是一个标准的 ISBN 码。ISBN 码的首位数字表示书籍的出版语言,例如 0 代表英语;第一个分隔符 - 之后的三位数字代表出版社,例如 670 代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。识别码的计算方法如下:首位数字乘以 1 加上次位数字乘以 2 ……以此类推,用所得的结果 mod11,所得的余数即为识别码,如果余数为 10,则识别码为大写字母 X。例如 ISBN 号码 0-670-82162-4 中的识别码 4 是这样得到的:对 067082162 这 9 个数字,从左至右,分别乘以 1,2,…,9 再求和,即 0×1+6×2+……+2×9=158,然后取 158mod11 的结果 4 作为识别码。你的任务是编写程序判断输入的 ISBN 号码中识别码是否正确,如果正确,则仅输出 Right;如果错误,则输出你认为是正确的 ISBN 号码。输入格式一个字符序列,表示一本书的 ISBN 号码(保证输入符合 ISBN 号码的格式要求)。输出格式一行,假如输入的 ISBN 号码的识别码正确,那么输出 Right,否则,按照规定的格式,输出正确的 ISBN 号码(包括分隔符 -)。输入输出样例输入 #1复制0-670-82162-4输出 #1复制Right输入 #2复制0-670-82162-0输出 #2复制0-670-82162-4#include<iostream>#include<iomanip>#include<cmath>#include<vector>#include<cstring>using namespace std;int main() {string s;cin >> s;int a = (s.at(0) - 48 + (s.at(2) - 48) * 2 + (s.at(3) - 48) * 3 + (s.at(4) - 48) * 4 + (s.at(6) - 48) * 5 + (s.at(7) - 48) * 6 + (s.at(8) - 48) * 7 + (s.at(9) - 48) * 8 + (s.at(10) - 48) * 9) % 11;if (s.at(12) - 48 == a) {cout << "Right" << endl;}else if (s.at(12) - 78 == a) {cout << "Right" << endl;}else if(a==10) {cout << s.at(0) << s.at(1) << s.at(2) << s.at(3) << s.at(4) << s.at(5) << s.at(6) << s.at(7) << s.at(8) << s.at(9) << s.at(10) << s.at(11) << "X" << endl;}else {cout << s.at(0) << s.at(1) << s.at(2) << s.at(3) << s.at(4) << s.at(5) << s.at(6) << s.at(7) << s.at(8) << s.at(9) << s.at(10) << s.at(11) << a << endl;}return 0;}
0 点赞 评论 收藏
分享
今天 14:08
哈尔滨理工大学
用高精度计算出 S=1!+2!+3!+⋯+n!(n≤50)。其中 ! 表示阶乘,定义为 n!=n×(n−1)×(n−2)×⋯×1。例如,5!=5×4×3×2×1=120。输入格式一个正整数 n。输出格式一个正整数 S,表示计算结果。输入输出样例输入 #1复制3输出 #1复制9说明/提示【数据范围】对于 100% 的数据,1≤n≤50。思路:计算大数阶乘累加和#include <iostream>#include <cstring> // 用于memset初始化数组using namespace std;// 移除不必要的全局变量,仅保留必要的数组和长度int a[5001], b[5001];int N;int len_a = 1; // 单独记录a数组的长度,避免混用int len_b = 1; // 单独记录b数组的长度// 修正后的阶乘计算+累加函数void JieC(int N) {memset(a, 0, sizeof(a));memset(b, 0, sizeof(b));a[1] = 1; // 1!的初始值(低位在前,a[1]是个位,a[2]是十位...)for (int i = 1; i <= N; i++) {// 步骤1:计算i! → a数组 = a数组 * i(大数乘法)int carry = 0; // 进位变量for (int j = 1; j <= len_a; j++) {int temp = (int)a[j] * i + carry; // 用long long避免溢出a[j] = temp % 10; // 当前位保留个位carry = temp / 10; // 进位传递到下一位}// 处理乘法后的剩余进位(可能新增位数)while (carry > 0) {len_a++;a[len_a] = carry % 10;carry /= 10;}// 步骤2:将i!(a数组)累加到结果b数组(大数加法)carry = 0;int max_len = max(len_a, len_b);for (int j = 1; j <= max_len; j++) {long long temp = (long long)b[j] + a[j] + carry;b[j] = temp % 10;carry = temp / 10;}// 处理加法后的剩余进位while (carry > 0) {len_b++;b[len_b] = carry % 10;carry /= 10;}}}// 无需额外Qh函数,加法时已处理进位,此处仅统一len_bvoid Qh() {len_b = 1;// 找到b数组的实际最大长度(避免前导0)for (int i = 5000; i >= 1; i--) {if (b[i] != 0) {len_b = i;break;}}}int main() {cin >> N;JieC(N);Qh();// 逆序输出(高位在前)for (int i = len_b; i >= 1; i--) {cout << b[i];}cout << endl;return 0;}
0 点赞 评论 收藏
分享

创作者周榜

更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务