代码编织梦想

题目链接 https://ac.nowcoder.com/acm/problem/54841
题目求从l到r的数将其拼接起来,问是否为3的倍数。
一般做法

第一次的想法是将每一个数的位数给他相加,如果可以被3整除就代表他是
3的倍数,但是超时了,因为很容易可以想到,我们的数据可能是1-1^18而我们这种写法的时间复杂度是O(n*m),想一下,极端情况肯定是超出的


#include<bits/stdc++.h>

using namespace std;
const int N = 100;
typedef long long ll;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin >> t;
	while (t--)
	{
		ll l, r;
		cin >> l >> r;
		ll ans = 0;
		for (ll i = l; i <= r; i++)
		{
			ll c = i;
			while (c)
			{
				ans += c % 10;
				c /= 10;
			}
		}
		if (ans % 3 == 0)
		{
			cout << "YES" << endl;
		}
		else
		{
			cout << "NO" << endl;
		}
	}
	return 0;
}

我们找一找规律可以发现,我们所有的数中没过三个数就一定有一个数可以被三整除,然后我们其他的两个数的对三的余数相加又一定是3,所以我们可以换一种思路,我们直接去判断第一个数和最后一个数的余数情况,并以此来判断是否可以被三整除,具体看注释
AC做法


	#include<bits/stdc++.h>

using namespace std;
const int N = 100;
typedef long long ll;
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int t;
	cin >> t;
	while (t--)
	{
		ll l, r;
		cin >> l >> r;
		//我们全看第一个数和最后一个数对于3的余数
		ll res = l % 3;
		ll ans = r % 3;
		//第一个数被三整除,那么如果最后一个数余2,那么肯定中间又一个1,
		//那么肯定1+2为3,或者为0,直接过
		if (res == 0 && (ans == 2 || ans == 0))
		{
			cout << "YES" << endl;
		}
		//同样的,我们可以发现余1的情况
		else if (res == 1 && (ans == 2 || ans == 0))
		{
			cout << "YES" << endl;
		}
		//同上,可以多写几个数来观察
		else if (res == 2 && ans == 1)
		{
			cout << "YES" << endl;
		}
		//除了这些,其他情况都不行
		else
		{
			cout << "NO" << endl;
		}
	}
	return 0;
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/m0_74236193/article/details/129678187

2019牛客多校第四场_ripped的博客-爱代码爱编程

A.meeting 场上写了一坨树形dp。。。 dfs序枚举集合点,答案由三部分组成: A:从父亲往外的节点(多走一步)得到(一边dfs一边更新) B:从自己的兄弟(多走两步(先到父亲再往下))得到 C:从自己的子树得到

牛客多校第四场题解_蠕虫君的博客-爱代码爱编程

A. 换根DP 题目: meeting 链接:https://ac.nowcoder.com/acm/contest/884/A 大意:从一棵树(n=1e5)上,选一个点,使这个点到其他点的距离的最大值最小 分析:

牛客网 NC14503 晨跑 最小公倍数-爱代码爱编程

文章目录 1. 题目描述1.1. Limit1.2. Problem Description1.3. Input1.4. Output1.5. Sample Input1.6. Sample Output1.7. Source2. 解读3. 代码 1. 题目描述 1.1. Limit Time Limit: 1000 ms

7.25 18级牛客多校第五场-爱代码爱编程

文章目录 比赛过程题解D题意解法代码E题意解法代码F题意解法代码I题意解法代码 比赛过程   这一场曹老师是MVP,F题急于签到还wa了一发,以后决定签到题还是得稳一点,检查一下再交,我整个人当天大比赛的时候状态并不好,E题当时想了好久没想到,但其实去年寒假集训的时候做过类似的题目应该有感觉,我当时还特意记过,只是当时没有重点去补,映像不深,

2020牛客暑期多校训练营(第六场)B、C、E、G、H、J、K题解及补题-爱代码爱编程

文章目录 2020牛客暑期多校训练营(第六场)题解及补题比赛过程题解A题意解法代码B题意解法代码C题意解法代码D题意解法代码E题意解法代码F题意解法代码G题意解法代码H题意解法代码I题意解法代码J题意解法代码K题意解法代码 2020牛客暑期多校训练营(第六场)题解及补题 比赛过程 这场开局两个签到挺稳的,然后看榜选择开B题,但是B题卡了太久

2020牛客暑期多校训练营(第七场)A、B、C、D、H、J题解及补题-爱代码爱编程

文章目录 2020牛客暑期多校训练营(第七场)题解及补题比赛过程题解A题意解法代码B题意解法代码C题意解法代码D题意解法代码E题意解法代码F题意解法代码G题意解法代码H题意解法代码I题意解法代码J题意解法代码 2020牛客暑期多校训练营(第七场)题解及补题 比赛过程 这场打出了牛客排名新低,原因一来这场题目难度差别较大,我们前期思考的有点慢

牛客编程巅峰赛S2第7场 - 钻石&王者 ABC-爱代码爱编程

A: 注意是子序列,也就是分三段,ABC段,结果为min(na,nb,nc)(na:A段中'a'的个数,nb:B段中'b'的个数,nc:C段中'c'的个数) 由于这里的特殊性,我们可以用双指针。 枚举a,c的个数。 然后l,r指针向中间移动,直到'a','c'都加1,预处理出'b'的个数,在指针移动时更新nb。 每次更新完求值即可。 const

牛客 BC120 小乐乐与二段数-爱代码爱编程

BC120 小乐乐与二段数 题目描述 小乐乐从老师口中听到了二段数这个名词,想更深入的了解二段数。 二段数是这样的正整数:恰好包含两种不同的十进制数字s和t,s不是0,并且s的所有出现均排列在所有的t的前面。例如,44444411是二段数(s是4,t是1),41、10000000和5555556也是。但4444114和44444都不是二段数

【筛法,思维,数学】牛客比赛NC210203I 牛牛的质因数-爱代码爱编程

链接:https://ac.nowcoder.com/acm/contest/9982/I 来源:牛客网 一、题目简介 牛牛最近对于质因数分解产生了浓厚的兴趣。 牛牛定义了一个函数F(x),它表示将x做质因数分解后得到的数字从小到大升序排列,然后将其“拼接”成一个大整数。 例如1500=22355*5,F(1500)=223555。 牛牛现在想要知道

2021牛客寒假算法基础集训营6题解-爱代码爱编程

本场题目很友好, H H H题还放过了暴力,不过感觉时限开的有点大了。 A、 回文括号序列计数 题意: 求长度为 n

牛客小白月赛36-爱代码爱编程

牛客小白月赛36 E. 皇城PK(签到)F. 象棋(签到)I. 四面楚歌(DFS 和 BFS 都可以)H. 卷王之王C. 杨辉三角(排列组合)B. 最短串A. 好哥哥D. 哥三好(三维DP)G. 永不言弃(图论)J. 科学幻想(线段树) E. 皇城PK(签到) 题意: 定义,有可能获得冠军:没输过的人 题解:遍历一遍所有输赢情况,只要输过

【每日算法】 NC151 最大公约数-爱代码爱编程

描述 如果有一个自然数 a 能被自然数 b 整除,则称 a 为 b 的倍数, b 为 a 的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。 输入 a 和 b , 请返回 a 和 b 的最大公约数。 数据范围:1≤ a,b ≤10^9 进阶:空间复杂度 O(1),时间复杂度 O(logn

机试算法编程题练习附答案-python-爱代码爱编程

 有的没有处理输入,修改main函数的入参验证各种输入 字符串筛选排序: 输入一个由n个大小写字母组成的字符串,按照Ascii码值从小到大的排序规则,查找字符串中第k个最小ascii码值的字母(k>=1), 输出该字母所在字符串的位置索引(字符串的第一个字符位置索引为0)。 k如果大于字符串长度,则输出最大ascii值的字母所在字符串的位置索引,

【牛客】NC19841 数学(Java)-爱代码爱编程

📖 题目⭐⭐: 链接:https://ac.nowcoder.com/acm/problem/19841 来源:牛客网 某年某月某天的数学课上,Actci正在遨游宇宙呢,对于他的屡教不改,她的数学老师决定难为一下Actci,将他叫醒。 “咳咳,我现在给出一个数a(0≤a≤ 1

c++算法集锦:字符串操作_三木ぃ的博客-爱代码爱编程

这里写目录标题 合法的括号字符串 合法的括号字符串 牛客链接:NC175 合法的括号字符串解法1:栈 我们使用两个栈来保存left和star的位置,每次匹配到右括号,首先在left中寻找最先出现的左括号进行匹配,若不存在,则去star中寻找星号进行匹配。 当右括号多的时候,则为false; 当右括号匹配完毕,左括号和星号进行匹配,此时

《牛客题霸-算法篇》刷题之nc230 nim游戏_o_胡萝卜_o的博客-爱代码爱编程

一、题目 二、示例 三、代码 class Solution: def NimGame(self , n: int) -> bool: return not n % 4 == 0

牛客面试高频算法题js(实现二叉树先序,中序和后序遍历、最小的k个数、求二叉树的层序遍历、寻找第k大、链表中的节点每k个一组翻转)_牛客网javascript 算法题-爱代码爱编程

NC45 实现二叉树先序,中序和后序遍历 描述 给定一棵二叉树,分别按照二叉树先序,中序和后序打印所有的节点。 数据范围:0 \le n \le 10000≤n≤1000,树上每个节点的val值满足 0 \le val

刷题记录:牛客nc13885music problem-爱代码爱编程

传送门:牛客 题目描述: 原题是英文且十分难懂(讲了一大堆pi话,还没讲清楚),翻译成人话就是给你一堆物品,问你拿不为0的任意个物品能不能被3600整除 弄清楚题目之后我们就可以开做了,首先分析一下题目我们显然会想到一