UVA 1103 How Many O's?
2024-08-26 00:34:33
题目链接:UVA-11038
题意为给定n和m,求n和m之间(包含)的所有数包含的0的个数。
思路是,用cal(x)表示小于等于x的数包含的0的个数。则答案为cal(n)-cal(m-1)。
再把求cal(x)转化为求\(\sum_i 在第i位为0的小于x的数的个数 \)。
要求在第i位为0的数的个数,我们只需要,把x的第i位设为0,然后分别i位左右两侧统计个数即可。
代码如下:
#include"cstdio"
#include"iostream"
#include"cstring"
#include"algorithm"
#include"cstdlib"
#include"vector"
#include"set"
#include"map"
#include"cmath"
using namespace std;
typedef long long LL;
const LL MAXN=; LL cal(LL x)
{
LL ans=;
LL rgt=;
LL ten=;
while(x>=)
{
LL p=x%;
x/=;
if(p!=)
ans+=x*ten;
else
ans+=(x-)*ten + (rgt+);
rgt=rgt+ten*p;
ten*=;
}
return ans;
}
int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
#endif
LL n,m;
while(scanf("%lld%lld",&m,&n)== && (n!=- || m!=-))
{
if(m==) printf("%lld\n",cal(n));
else printf("%lld\n",cal(n)-cal(m-));
}
return ;
}
最新文章
- JS 生成GUID 方法
- Python 学习笔记四
- 设计模式学习之外观模式(Facade,结构型模式)(8)
- 转载-- http接口、api接口、RPC接口、RMI、webservice、Restful等概念
- 【News】SpagoBI中国官方微信对外发布
- Android实现地图服务
- Eclipse配置CAS client
- jcarousellite 实现图片列表滚动
- tcpdump 命令行抓包工具
- Kill Processes in Linux
- 【转】android开发 dts、各种接口porting----不错
- 【Centos7】卸载OpenJDK
- python3 参数*args 、 **args 在函数定义和调用中的应用
- 更改系统盘符后DFS无法复制故障处理
- 潭州课堂25班:Ph201805201 django 项目 第二十课 数据库分析设计图 (课堂笔记)
- Nginx 安装配置教程
- fmt标签如何计算两个日期之间相隔的天数
- IdentityServer4结合AspNetCore.Identity实现登录认证踩坑填坑记录
- 使用dshow捕获摄像头图像
- Network Simulator for P4(NSP4) src内容介绍