首页 > 编程语言 >[AtCoder-AT_ABC070_A]题解(C++)

[AtCoder-AT_ABC070_A]题解(C++)

时间:2023-05-09 13:55:05浏览次数:45  
标签:AtCoder ABC070 cout int 题解 cin long Solve tie

Part I Preface

原题目(Luogu)
原题目(AtCoder)

Part II Sketch

  • 给定一个正整数 \(n(100\leq n \leq 999)\)。
  • 求 \(n\) 是否是一个回文数,是输出 \(\texttt{Yes}\),不是输出 \(\texttt{No}\)。

Part III Analysis

Solve 1

如果仔细观察的话,应该都能发现,\(n\) 一定是一个三位数。三位数有什么特性?对,三位数是不是回文数只取决于它的百位和个位是否相等,与十位没有任何关系。所以我们可以依据这个结论判断它是否是回文数,引出了字符串和数字两种判断方式。

  • 普适性:仅三位数

Solve 2

回文数判断的本质,就是把数位分离开,再让原先的最低位去现在的最高位,以此类推。我们可以用一个数整形 \(t\) 存放原数字,再用一个数 \(s\) 表示反转之后的数。每次 \(s\) 都再最高位加上 \(t\) 末尾的数字,最后判断 \(s\) 是否等于原数字即可。

  • 普适性:仅 C++ 可以非高精度存放的所有数据

Solve 3

回文数判断的本质,就是把整个数反转过来,判断它和原串是否相等,只不过我们用数位分离,再乘起来的方式实现了它。STL 模板库提供了一个现成的反转函数 reverse(),我们只需要输入字符串,reverse() 一下,判断一下是否和原字符串相等即可。

  • 普适性:stringchar[] 可以存放下的所有数据

Part IV Code

Solve 1 Code

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
int n; 
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n;
    if(n / 100 == n % 10) cout << "Yes";
    else cout << "No";
    return 0;
}

Solve 2 Code

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int n;
int t, s;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n;
    t = n;
    while(t){
        s = s * 10 + t % 10;
        t /= 10;
    }
    if(s == n) cout << "Yes";
    else cout << "No";
    return 0;
}

Solve 3 Code

#include <bits/stdc++.h>
using namespace std;
string n, t;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n;
    t = n;
    reverse(t.begin(), t.end());
    if(t == n) cout << "Yes";
    else cout << "No"; 
    return 0;
}

Part V Record


Record

标签:AtCoder,ABC070,cout,int,题解,cin,long,Solve,tie
From: https://www.cnblogs.com/silentBlog/p/17383705.html

相关文章

  • P8714 题解
    洛谷P8714题意自己看(思路分五个小题去考虑。问题A枚举门牌号,看门牌号中有多少个\(2\),统计答案即可。voidsloveA(){//问题Aintsum=0;for(inti=1,j;i<=2020;i++){//枚举门牌号j=i;while(j){//枚举每一位sum+=(j%10......
  • AtCoder Beginner Contest 209(D,E)
    AtCoderBeginnerContest209(D,E)D(树,lca)D这个题给出\(n\)个点,\(n-1\)条边,有两个人,一个人在\(c\)点,一个人在\(d\)点,两人以相同的速度朝着对方走来(并且都是按照最短路的走法),问这两个人相遇是在点上,还是在路上这一题意很好知道,就是判断这两点之间的最短距离的奇偶性然后我就一......
  • 第十四届蓝桥杯省赛C++ B组(个人经历 + 题解)
    参赛感受这是我第一次参加蓝桥杯的省赛,虽然没什么参赛经验,但是自己做了很多前几届蓝桥杯的题,不得不说,这一届蓝桥杯省赛的难度相较于之前而言还是比较大的。之前很流行蓝桥杯就是暴力杯的说法,但是随着参赛人数的增多,比赛认可度的提升,比赛题目的质量也明显越来越高了。这次省赛涉及......
  • CF920E Connected Components? 题解
    一道线段树优化建图好题(大雾扣掉一些边看起来不好做,我们直接大力加上存在的边,然后跑连通块。对于一个点,如果他被扣掉了\(k\)个邻居,那么没扣掉的那些形成了至多\(k+1\)个连续段,可以用线段树优化建图向每个连续段各用\(\log\)的代价连边。由于总共扣掉了\(m\)条边,所以总共......
  • 装最多水的容器 - 题解
    1.问题描述  原题的地址见:ContainerWithMostWater-LeetCode.此问题等价于如下问题:    给定所有元素非负的数组[a0,a1,...,an-1],计算(j-i)|aj-ai|(其中j>i)的最小值。 2.暴力解法  有了问题的描述,很容易写出暴力求解的算法:intmaxArea(vector<int>......
  • Windows 安装 pycrypto 常见问题解决
    关于python使用Crypto.Cipher模块,ImportError:Nomodulenamed'Crypto' 常见问题解决1. 需要安装:MicrosoftVisualC++14.0error:MicrosoftVisualC++14.0isrequired.Getitwith"MicrosoftVisualC++BuildTools":http://landinghub.visualstudio.co......
  • Atcoder Grand Contest 046 D - Secret Passage
    思路挺自然的一道agc。首先发现删除完字符后的状态可以用一个三元组\((i,j,k)\)表示,其中\(i\)表示删除完之后只剩\([i+1,n]\)的后缀,\(j\)表示可以在后面插入\(j\)个\(0\),\(k\)表示可以在后面插入\(k\)个\(1\),显然不同的三元组能够得到的串是不同的,而一组三元组可......
  • CF1794D 题解
    一、题目描述:一个正整数$m$可以被唯一分解成$p_1^{e_1}\timesp_2^{e_2}\times...\timesp_k^{e_k}$的形式,其中$p_1,p_2,...,p_k$为互不相同的质数,$e_1,e_2,...,e_k$为正整数。定义一个可重集$f(m)$为$\{p_1,e_1,p_2,e_2,...,p_k,e_k\}$。现在给定正整数$......
  • 51nod 1365 Fib(N) mod Fib(K)-题解
    51nod1365Fib(N)modFib(K)个人评价:考一些奇奇怪怪的知识点呢算法矩阵快速幂、斐波那契公式题面求\(F_n\%F_k\)的值,\(1\leqn,k\leq1e18\)问题分析我一开始居然想着直接矩阵快速幂求出两个值算,我也是真的牛……我们要知道这些斐波那契公式(考的真怪)\[F_{-n}=(-1)^{n......
  • 2023ccpc湖北省赛/2023 Hubei Provincial Collegiate Programming Contest个人题解
    2023HubeiProvincialCollegiateProgrammingContestAPrimeMagicWalkAlonehasasequence\(a_1,a_2,...,a_n\),andhecanuseamagiconit:Chooseanoddprimenumber\(p\)andaninterval\([l,r]⊆[1,n]\)satisfying\(r−l+1=p\),andthenadd......