zzulioj - 2599: 对称的数字
题目链接:
http://acm.zzuli.edu.cn/problem.php?id=2599
这个题表面上看起来很简单....但是如果直接写的话就算用long long也会有越界的情况(double即使不越界,也可能有精度损失)所以我们需要用到大整数加法
#include<set>
#include<map>
#include<stack>
#include<queue>
#include<cmath>
#include<cstdio>
#include<cctype>
#include<string>
#include<vector>
#include<climits>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define max(a, b) (a > b ? a : b)
#define min(a, b) (a < b ? a : b)
#define mst(a) memset(a, 0, sizeof(a))
#define _test printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n")
using namespace std;
typedef long long ll;
typedef pair<int, int> P;
const double eps = 1e-;
const int INF = 0x3f3f3f3f;
const ll ll_INF = ;
const int maxn = 1e3+;
char num1[maxn], num2[maxn], res[maxn];
void sum() { //大整数加法
mst(res);
int len1 = strlen(num1);
int len2 = strlen(num2);
reverse(num1, num1+len1); //反转第一个数
reverse(num2, num2+len2); //反转第二个数
int kase = ;
while(kase < len1 && kase < len2) { //重叠部分相加
res[kase+] = (res[kase] + num1[kase] + num2[kase] - ''*)/; //模拟进位相加
res[kase] = (res[kase] + (num1[kase] + num2[kase] - ''*))% + '';
++kase;
}
while(kase < len1) { //非重叠部分相加
res[kase+] = (res[kase] + num1[kase] - '')/;
res[kase] = (res[kase] + num1[kase] - '')% + '';
++kase;
}
while(kase < len2) { //同上
res[kase+] = (res[kase] + num2[kase] - '')/;
res[kase] = (res[kase] + num2[kase] - '')% + '';
++kase;
}
if (res[kase]) { //判断最后一次相加有没有进位
res[kase] += '';
res[++kase] = '\0';
}
else
res[kase] = '\0';
}
bool okk() { //判断回文
int len = strlen(res);
for (int i = ; i<len/; ++i)
if (res[i] != res[len-i-])
return false;
return true;
}
int main(void) {
while(~scanf("%[^\n]%*c", num1)) {
bool ok = false;
strcpy(num2, num1);
for (int i = ; i<; ++i) {
reverse(num2, num2+strlen(num2));
sum(); //将反转过后的数与原数字相加
if (okk()) { //判断是否满足回文
ok = true;
break;
}
strcpy(num1, res); //将相加后的结果复制给另外两个数字准备下次计算
strcpy(num2, res);
}
printf(ok ? "%s\n" : "NO\n", res);
}
return ;
}
zzulioj - 2599: 对称的数字的更多相关文章
- 246. Strobogrammatic Number 上下对称的数字
[抄题]: A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at u ...
- Python正则式的基本用法
Python正则式的基本用法 1.1基本规则 1.2重复 1.2.1最小匹配与精确匹配 1.3前向界定与后向界定 1.4组的基本知识 2.re模块的基本函数 2.1使用compile加速 2.2 ma ...
- 深入揭秘HTTPS安全问题&连接建立全过程
作者:[已重置]链接:https://zhuanlan.zhihu.com/p/22142170来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 作为开发者必备的网络安全 ...
- Python正则表达式Regular Expression基本用法
资料来源:http://blog.csdn.net/whycadi/article/details/2011046 直接从网上资料转载过来,作为自己的参考.这个写的很清楚.先拿来看看. 1.正则表 ...
- PID控制器开发笔记之十二:模糊PID控制器的实现
在现实控制中,被控系统并非是线性时不变的,往往需要动态调整PID的参数,而模糊控制正好能够满足这一需求,所以在接下来的这一节我们将讨论模糊PID控制器的相关问题.模糊PID控制器是将模糊算法与PID控 ...
- [CQOI2017]小Q的表格(数论+分块)
题目描述 小Q是个程序员. 作为一个年轻的程序员,小Q总是被老C欺负,老C经常把一些麻烦的任务交给小Q来处理.每当小Q不知道如何解决时,就只好向你求助. 为了完成任务,小Q需要列一个表格,表格有无穷多 ...
- Python中的正则表达式(re)
import re re.match #从开始位置开始匹配,如果开头没有则无 re.search #搜索整个字符串 re.findall #搜索整个字符串,返回一个list 举例: r(raw)用在p ...
- CodeForces 909F
题意略. 思路: 第一问: 递归地来写,找对称,发现关于(1<<y) - 1和(1<<y)对称的数字做 & 结果为0. 第二问: 6,7特殊考虑.循环左移(1<& ...
- 安全HTTPS-全面详解对称加密,非对称加密,数字签名,数字证书和HTTPS【下】
1. HTTPS 1.1. 什么是HTTPS HTTPS(HypertextTransfer Protocol Secure)即安全的HTTP.HTTPS的安全基础是安全套接层(Secure Soc ...
随机推荐
- 解决Spring Cloud中Feign第一次请求失败的问题
在Spring Cloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题 com.netflix.hystrix.exception.HystrixTimeoutE ...
- Shell脚本——添加和删除用户
写一个脚本admin_user.sh,其用法格式为: admin_user.sh --add USERLIST --del USERLIST -v|--verbose -h|--help 其中, -h ...
- MediaWiki上传文件大小设置
一.概述 MediaWiki默认最大上传文件大小为2M,碰到文件较大需要修改这个限制,需要改为8M. 二.修改php.ini 使用docker运行的MediaWiki,默认是没有php.ini这个文件 ...
- Java面试-TCP连接及其优化
作为一个后端程序员,网络连接这块是一个绕不过的砍,当你在做服务器优化的时候,网络优化也是其中一环,那么作为网络连接中最基础的部分-TCP连接你了解吗?今天我们来仔细看看这个部分. TCP建立连接-三次 ...
- springboot打war包汇总
概述 第一次用maven工具打war包,出现各种各样的问题,做个问题记录方便下次查看 maven 一开始用的maven是springboot默认的,在.m2下,要打包时才发现没有mvn指令.索性自己就 ...
- PHP小程序后端支付代码亲测可用
小程序后端支付代码亲测可用 <?php namespace Home\Controller; use Think\Controller; class WechatpayController ex ...
- ASP.NET Core 3.0 WebApi 系列【1】创建ASP.NET Core WebApi 项目
目录 写在前面 一.运行环境 二.项目搭建 三.测试 API 四.基础知识 五.写在最后 写在前面 C#语言可以创建RESTful服务,被称作WebApi.在这里总结学习使用支持创建.读取.更新.删除 ...
- ActiveMq C# 消息特性:延迟和定时消息投递
ActiveMQ from version 5.4 has an optional persistent scheduler built into the ActiveMQ message broke ...
- lift提升图
Lift图衡量的是,与不利用模型相比,模型的预测能力“变好”了多少,lift(提升指数)越大,模型的运行效果越好. TP:划一个阈值后的正样本. P:总体的正样本. 在模型评估中,我们常用到增益/提升 ...
- vue中如果在页面中v-model的是字典,那么在定义字典的时候,需要明确定义键值为''或者[],否则给字典的键值赋值后页面不显示
如题 在template模板中 {{}} {{form_temp.blOwnerMemberList}} #是字典的形式哦 {{}} 在return的属性中 form_temp: { blOwnerM ...