AT4159 [ABC101B] Digit Sums

   日期:2021-04-06     浏览:173    评论:0    
核心提示:原题本题思路:先数位分离,再进行判断。#include<cstdio>typedef unsigned long long ull;typedef __uint128_t L;class FastMod{ public: FastMod(ull b):b(b),m(ull((L(1)<<64)/b)){} ull reduce(ull a){ ull q=(ull)((L(m)*a)>>64);

原题

本题思路:
先数位分离,再进行判断。

#include<cstdio>

typedef unsigned long long ull;
typedef __uint128_t L;
class FastMod{ 
	public:
    	FastMod(ull b):b(b),m(ull((L(1)<<64)/b)){ }
    	ull reduce(ull a){ 
        	ull q=(ull)((L(m)*a)>>64);
        	ull r=a-q*b;
        	return r>=b?r-b:r;
    	}
    private:
  		ull b,m;
};
FastMod F(10);
signed main(){ 
	int a,b,n(0);
	scanf("%d",&a);
	b=a;
	while(b){ //数位分离。当这个数为0时,就可以退出循环了。
		n+=F.reduce(b)//等同于 n+=b%10;分离数字最低位
		b/=10;//数字去除最低位。(C++整数相除自动向下取整)
	}
	if(!(a%n))puts("Yes");//等同于if(a%n==0)puts("Yes");
	else puts("No");
	return 0;
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服