博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CodeForces 595B
阅读量:5291 次
发布时间:2019-06-14

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

题意:有一个n位的电话号码,每位电话号码将分成n/k段,每段均为k为,求出满足以下要求的电话号码个数

1)第i段可以整除a[i];

2)第i段不能以数字b[i]开头。

题解:

1、 第i段能被a[i]整除的的个数z=(10^k-1)/a[i]+1;

2、 能被a[i]整除但以b[i]开头的个数y有:设 MIN=b[i]*10^(k-1),MAX=(b[i]+1)*10^(k-1)-1;

    ①如果MIN/a[i]*a[i]=MIN, 则y=(MAX-MIN)/a[i]+1;

  ②如果①条件不满足,如果(MIN/a[i]+1)*a[i]<=MAX, 则y=(MAX-(MIN/a[i]+1)*a[i])/a[i]+1;

通过1和2可以得出第i段满足的号码个数为c[i]=z-y;将每一段满足情况的个数求出来,将它们乘起来就可以求出所要答案。

#include 
#include
#include
using namespace std;long long mod=1000000007;long long a[100000];long long b[100000];long long c[100000];int main(){ long long n,k; scanf("%lld%lld",&n,&k); for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/mgxj/p/5535841.html

你可能感兴趣的文章
C++----练习--引用头文件
查看>>
11.基本包装类型
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
用HttpCombiner来减少js和css的请问次数
查看>>
FUSE-用户空间文件系统
查看>>
将tiff文件转化为jpg文件并保存
查看>>
ubuntu 16.04 开机脚本
查看>>
 VS2012 C#调用C++ dll
查看>>
TCL:表格(xls)中写入数据
查看>>
SQL SERVER 2005中如何获取日期(一个月的最后一日、一年的第一日等等)
查看>>
django 学习笔记(转)
查看>>
控制台程序秒变Windows服务(Topshelf)
查看>>
字节流与字符流的区别详解
查看>>
20141026--娱乐-箱子
查看>>
自定义分页
查看>>
Oracle事务
查看>>
任意输入10个int类型数据,把这10个数据首先按照排序输出,挑出这些数据里面的素数...
查看>>
String类中的equals方法总结(转载)
查看>>