博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Beautiful Numbers(牛客网)
阅读量:6346 次
发布时间:2019-06-22

本文共 1858 字,大约阅读时间需要 6 分钟。

链接:

来源:牛客网

题目描述

NIBGNAUK is an odd boy and his taste is strange as well. It seems to him that a positive integer number is
beautiful if and only if it is divisible by the sum of its digits.
 
We will not argue with this and just count the quantity of beautiful numbers from 1 to N.

输入描述:

The first line of the input is T(1≤ T ≤ 100), which stands for the number of test cases you need to solve. Each test case contains a line with a positive integer N (1 ≤ N ≤ 1e12)

输出描述:

For each test case, print the case number and the quantity of beautiful numbers in [1, N].
示例1

输入

21018

输出

Case 1: 10Case 2:
 
题意:给你一个数n让你判断在1-n中有多少个数求余它每个位上的数字之和为0 题解: 由于给的数字较大,暴力跑肯定会超时,就想到用数位dp去做,因为最大范围是1e12,则每个位上的数之和一定不大于12*9=108,则求出范围内各个数上和的最大值x,再从1枚举到x,进行数位dp.
#include 
using namespace std;typedef long long ll;int num[20];ll dp[15][120][120];int too;ll dfs(int pos,int mod,int sum,bool limit){ if(pos==-1) return mod==0&&sum==too; if(!limit&&dp[pos][mod][sum]!=-1) return dp[pos][mod][sum]; int mx=limit?num[pos]:9; ll ans=0; for(int i = 0;i <= mx;++i) { if(sum+i<=too) ans+=dfs(pos-1,(mod*10+i)%too,sum+i,limit&&i==mx); } if(!limit) dp[pos][mod][sum]=ans; return ans;}ll solve(ll x){ int d=0; int ret=0; while(x) { int temp=x%10; num[d++]=temp; x/=10; ret+=temp; } int nx=num[d-1]-1+(d-1)*9; ret=max(ret,nx); ll ans=0; for(int i = 1;i <= ret;++i) { memset(dp,-1,sizeof(dp)); too=i; ans+=dfs(d-1,0,0,1); } return ans;}int main(){ int t; scanf("%d",&t); int res=0; while(t--) { ll a; res++; scanf("%lld",&a); ll ans=solve(a); printf("Case %d: ",res); printf("%lld\n",ans); } return 0;}

  

 

转载于:https://www.cnblogs.com/aaddvvaanntteezz/p/10695685.html

你可能感兴趣的文章
oracle 中proc和oci操作对缓存不同处理
查看>>
[LeetCode] Spiral Matrix 解题报告
查看>>
60906磁悬浮动力系统应用研究与模型搭建
查看>>
指纹获取 Fingerprint2
查看>>
面试题目3:智能指针
查看>>
取消凭证分解 (取消公司下的多个利润中心)
查看>>
flask ORM: Flask-SQLAlchemy【单表】增删改查
查看>>
vim 常用指令
查看>>
nodejs 获取自己的ip
查看>>
Nest.js 处理错误
查看>>
你好,C++(16)用表达式表达我们的设计意图——4.1 用操作符对数据进行运算...
查看>>
[转] Mac下 快速写博客的软件 MarsEdit
查看>>
Unity的赛车游戏实现思路
查看>>
[Android UI] Shape详解 (GradientDrawable)
查看>>
边学边体验django--HttpRequest 对象
查看>>
18.3 redis 的安装
查看>>
jdbc 简单连接
查看>>
Activiti 实战篇 小试牛刀
查看>>
java中的Static class
查看>>
Xshell 连接CentOS服务器解密
查看>>