LuoguP1898 缘分计算 题解
Content
根据一个长度为 \(l\),只含大写字母的字符串算出它的“缘分值”。
步骤如下:
- 给定一个数 \(st\)。
- 将字符串里面的所有字母改成数字(如 A 改成 \(st\),B 改成 \(st+1\),……,Z 改成 \(st+25\)),并拼接成一个数字。
- 将这个数字中相邻数位的两个数相加并依次写下它的个位数,重新拼接出新的数字。
- 对这个新的数字重复操作 \(3\),直到这个数字 \(\leqslant 100\) 为止,此时这个数字即为需要操作的字符串的“缘分值”。
数据范围:\(4\leqslant l\leqslant 10,1\leqslant ST\leqslant 10000\)。
Solution
这道题目是一道很简单的模拟,如果对题意不懂的建议先去题面中的解释看看,再来看题解。
就只需要将所有的字符根据 \(st\) 转化为数字,然后一个一个拼接,最后再模拟一下整合的过程就好了。完全就是按照题目中所说的模拟一遍就好了。
Code
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
using namespace std;
string s;
int t, sum[17], digits[1000007], cnt;
int main() {
cin >> s >> t;
int n = s.size(), sumtot = 0;
for(int i = 0; i < n; ++i) {
sum[i] = t + (s[i] - 'A');
int tmp[17] = {0};
while(sum[i]) {
tmp[++tmp[0]] = sum[i] % 10;
sum[i] /= 10;
}
for(int i = tmp[0]; i >= 1; --i)
digits[++cnt] = tmp[i];
}
while(cnt >= 3) {
if(cnt == 3) {
for(int i = 1; i <= 3; ++i)
sumtot = sumtot * 10 + digits[i];
if(sumtot == 100) break;
}
for(int i = 1; i < cnt; ++i) {
digits[i] = (digits[i] + digits[i + 1]) % 10;
// printf("%d", digits[i]);
}
// puts("");
cnt--;
}
if(sumtot == 100) printf("%d", sumtot);
else {
sumtot = 0;
for(int i = 1; i <= cnt; ++i)
sumtot = sumtot * 10 + digits[i];
printf("%d", sumtot);
}
return 0;
}
LuoguP1898 缘分计算 题解的更多相关文章
- 洛谷 P1898 缘分计算
P1898 缘分计算 题目描述 缘分是一个外国人难以理解的中文名词.大致说来,缘分是一种冥冥中将两人(通常是情人)结合的力量.仅管这是种迷信,很多人——特别是女生——喜欢去计算它. 不幸的是,644 ...
- BZOJ5334:[TJOI2018]数学计算——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5334 小豆现在有一个数x,初始值为1. 小豆有Q次操作,操作有两种类型: 1 m: x = x ...
- TJOI2018 数学计算 题解
题目 小豆现在有一个数 \(x\) ,初始值为 \(1\) . 小豆有 \(Q\) 次操作,操作有两种类型: \(m\): \(x=x×m\),输出 \(x\mod M\) : \(pos\): \( ...
- 洛谷【P1898】缘分计算
我对模拟的理解:http://www.cnblogs.com/AKMer/p/9064018.html 题目传送门:https://www.luogu.org/problemnew/show/P189 ...
- 洛谷P1028 数的计算 题解 动态规划入门题
题目链接:https://www.luogu.com.cn/problem/P1028 题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数 \(n\) ): 先输入一个自然数 \(n(n \ ...
- 洛谷新手题 P1028 数的计算题解
题目描述 我们要求找出具有下列性质数的个数(包含输入的自然数nn): 先输入一个自然数nn(n \le 1000n≤1000),然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个 ...
- CCF-CSP认证 C++题解目录
持续更新中,记录刷题过程并分享一下小小的心得总结. 试题编号 试题名称 标签 202006-1 线性分类器 | 题解 线性规划 202006-2 稀疏向量| 题解 归并排序思想 202006-3 化学 ...
- BZOJ百题版切计划(不咕)
传送门 BZOJ 前言 听说最近要省选,那么我就写一下吧.QwQ! 1000 过于简单,不写了. 1001 不会对偶图,直接优化最小割 题解 1002 高精度套公式计算 题解 (Code by hey ...
- hdu-6621 K-th Closest Distance
题目链接 K-th Closest Distance Problem Description You have an array: a1, a2, , an and you must answer ...
随机推荐
- Vue3学习与实战 · 全局挂载使用Axios
在vue2中会习惯性的把axios挂载到全局,以方便在各个组件或页面中使用this.$http请求接口.但是在vue3中取消了Vue.prototype,在全局挂载方法和属性时,需要使用官方提供的gl ...
- 【Java面试题】-- Java基本类型
Java基本类型 2019-11-03 19:03:48 by冲冲 1.两个float型相减丢失精度,如何解决? 使用BigDemical装饰器模式 public class Test { pub ...
- Redis线程模型的前世今生
一.概述 众所周知,Redis是一个高性能的数据存储框架,在高并发的系统设计中,Redis也是一个比较关键的组件,是我们提升系统性能的一大利器.深入去理解Redis高性能的原理显得越发重要,当然Red ...
- 群晖ping自动关机
因为学校宿舍环境的原因,每天早上10点左右宿管可能会来检查内务情况,然后一定会关闭电闸,就导致如果我的nas在10点半时开机的话用的是UPS的电源,直接导致UPS电量耗竭,而我又不可能一直去观察宿舍有 ...
- Swagger2简单使用教程
Swagger2简单使用教程 1.简介 Swagger是为了解决企业中接口(api)中定义统一标准规范的文档生成工具.很多采用前后端分离的模式,前端只负责调用接口,进行渲染,前端和后端的唯一联系, ...
- Linux关机/重启/用户切换/注销
目录 1. 关机/重启命令 2. 用户切换/注销 2.1 基本说明 2.2 切换用户 2.3 注销用户 1. 关机/重启命令 # shutdown命令 shutdown -h now # 立即关机 s ...
- Notepad++—英文版卡框架翻译
用到了,就积累到这里,不急一时,慢慢沉淀. 一.File 二.Edit 三.Search 四.View视图 Always on top #总在最前 Toggle full screen mode ...
- Linux之crond定时任务
1. 使用crontab工具配置的定时任务 2. 配置定时任务建议规范 3. 定时任务配置问题导致系统出现故障实例 1. 使用crontab工具配置的定时任务 名称 crontab - 维护单个用户的 ...
- 使用Mybatis出现的问题+配置优化+ResultMap
一.可能出现的问题 1.Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: ...
- 普通用户iptables规则持久化,开机自动恢复
本文档对于docker环境下并不适用,docker环境的iptables持久化请参考https://www.cnblogs.com/wiseo/p/15000745.html 添加iptables规则 ...