[TK] CF1526B I Hate 1111

给定一个数,将它表示成若干个形如 11,111,1111 之类的数之和,判断有没有可行解

考虑到一种贪心,即从高位开始依次向下减去每位数字,判断还能不能减动,减不动或者没减完就报告无解. 显然这样的贪心仅在 11,111,1111 的出现次数之和不超过 9 时是稳定正确的,一旦涉及到进位问题,贪心做法便不可取.

因此我们分类讨论来做这道题:

对于这个数 x 中, 1 的个数为偶数的部分(即 11,1111,111111),可以发现它们全部都是 11 的倍数

对于 x 中,1 的个数为奇数的部分(除 1),可以发现它们都可以通过减去一个 111 来变成 11 的倍数. 综上,原数可以表示为 11 的倍数与 111 的倍数之和,因此我们设其为 x=11a+111b

考虑直接对原数模 11,这样操作剩下的余数可以求得,考虑到 111mod11=1,因此 (11a+111b)mod11=b,即余数就为原数中 111 的个数.

因为除此之外,对 11 的个数并无要求,因此只需要判断 111rx 的大小关系来判断合法性即可.

#include<bits/stdc++.h>
using namespace std;
int main(){
	int cases;cin>>cases;while(cases--){
		int n;cin>>n;
		cout<<((n%11)*111<=n?"yes":"no")<<endl;
	}
}
posted @   HaneDaniko  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示