codeforce 595B-Pasha and Phone(数学)
今天补题,昨天是我太猖狂了,在机房吹牛,然后说着说着忘了时间,后来楼长来了,我们走了,CF没打成。
不扯了,下面说题;

题目的意思是给你n和k,
n代表最后得出的号码有n为,然后k能被n整除,就是把n这串号码分成k分,然后每份有n/k个数位。
在下面一行有n/k个数ai,第三行为n/k个数bi;
然后不是有n/k个数位么,这里面对应填的就是 是ai的整数倍,位数不超过k位且这个数开头不能以bi开头。
问一共有多少种不同的号码能组成。
那么先求每个数位上符合要求的有多少个,共k个数位,每个数位上的个数记为c[i],那么最后的结果就是k个c[i]相乘对1e9+7取余。
每个空格上的符合要求的元素是ai的倍数且首位不能是bi,如果bi!=0要求的每格元素要是n/k位,所以如果是ai的倍数且不足n/k位的首位是不是就是0了,就都符合要求,
因为要n/k位那么最大能取到的数就是t=1e(n/k)-1,那t/ai+1,就是在1到t间ai的倍数的个数,那么要减不合要求的就是bi*(1e(n/k)-1)-1到(bi+1)*(1e(n/k)-1)-1之间能整除ai数的个数,
因为在这区间里都是以bi开头。
如果bi为0,那么不合要求的是不是就是那些以0开头的,就是在k=1e(n/k-1)-1,k/ai+1,就是不合要求的个数。
最后每格合要求的个数就是t-不合要求的。
1 /*sjy*/
2 #include<stdio.h>
3 #include<algorithm>
4 #include<iostream>
5 #include<string.h>
6 #include<stdlib.h>
7 const long long N=1e9+7;
8 typedef long long ll;
9 using namespace std;
10 ll a[100005];
11 ll b[100005];
12 int main(void)
13 {
14 ll i,j,k,p,q,s,pp;
15 while(scanf("%I64d %I64d",&p,&q)!=EOF)
16 {
17 k=p/q;
18 pp=1;
19 for(i=0; i<k; i++)
20 scanf("%I64d",&a[i]);
21 for(i=0; i<k; i++)
22 scanf("%I64d",&b[i]);
23 for(i=0; i<k; i++)
24 {
25 ll sum=0;
26 ll cn=1;
27 for(j=0; j<q-1; j++)
28 {
29 cn*=10;
30 }
31 if(b[i]!=0)
32 {
33 ll x1=cn*(b[i]+1)-1;//(bi+1)*(1e(n/k)-1)-1
34 ll x2=cn*b[i]-1;//bi*(1e(n/k)-1)-1
35 sum=x1/a[i]-x2/a[i];
36 sum=(cn*10-1)/a[i]+1-sum;//(t=cn*10-1)
37 }
38 else if(b[i]==0)
39 {
40 sum+=(cn-1)/a[i];//首位为零的个数
41 sum=(cn*10-1)/a[i]-sum;
42 }
43
44 pp=(pp%N*sum%N)%N;
45 }
46 printf("%I64d\n",pp);
47 }
48 return 0;
49 }
codeforce 595B-Pasha and Phone(数学)的更多相关文章
- Codeforces 595B - Pasha and Phone
595B - Pasha and Phone 代码: #include<bits/stdc++.h> using namespace std; #define ll long long # ...
- Codeforces Round #337 (Div. 2) A. Pasha and Stick 数学
A. Pasha and Stick 题目连接: http://www.codeforces.com/contest/610/problem/A Description Pasha has a woo ...
- Codeforces 595B. Pasha and Phone 容斥
B. Pasha and Phone time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- codeforce Gym 100418K Cards (概率,数学)
题意:麦田的故事,n张牌,取x张牌,记住前x张牌最大的值m,继续往后取,遇到第一张比m大的牌就停下来.求一个x使得最后的牌在整副牌里是最大的期望最大. 假设最大的牌是A,A在各种位置出现的概率就是相等 ...
- Codeforce 370A Rook, Bishop and King 数学规律
这个题目挺有意思的,给定 起终点,要你求车,象,王分别最少要走多少步 车横竖都能走,而且每步任意走几格,所以它是最容易处理的,如果在同行或者同列,就是1,否则就是2 象要找下规律,象任意对角线都能走, ...
- 数学思想:为何我们把 x²读作x平方
要弄清楚这个问题,我们得先认识一个人.古希腊大数学家 欧多克索斯,其在整个古代仅次于阿基米德,是一位天文学家.医生.几何学家.立法家和地理学家. 为何我们把 x²读作x平方呢? 古希腊时代,越来越多的 ...
- 速算1/Sqrt(x)背后的数学原理
概述 平方根倒数速算法,是用于快速计算1/Sqrt(x)的值的一种算法,在这里x需取符合IEEE 754标准格式的32位正浮点数.让我们先来看这段代码: float Q_rsqrt( float nu ...
- MarkDown+LaTex 数学内容编辑样例收集
$\color{green}{MarkDown+LaTex 数学内容编辑样例收集}$ 1.大小标题的居中,大小,颜色 [例1] $\color{Blue}{一元二次方程根的分布}$ $\color{R ...
- 深度学习笔记——PCA原理与数学推倒详解
PCA目的:这里举个例子,如果假设我有m个点,{x(1),...,x(m)},那么我要将它们存在我的内存中,或者要对着m个点进行一次机器学习,但是这m个点的维度太大了,如果要进行机器学习的话参数太多, ...
随机推荐
- Spring Cloud 2021.0.0 正式发布,第一个支持Spring Boot 2.6的版本!
美国时间12月2日,Spring Cloud 正式发布了第一个支持 Spring Boot 2.6 的版本,版本号为:2021.0.0,codename 为 Jubilee. 在了解具体更新内容之前, ...
- day16 循环导入、模块搜索路径、软件开发、包的使用
day16 循环导入.模块搜索路径.软件开发.包的使用 1.循环导入 循环导入:循环导入问题指的是在一个模块加载/导入的过程中导入另外一个模块,而在另外一个模块中又返回来导入第一个模块中的名字,由于第 ...
- MyBatis(2):CRUD操作
编写接口 import com.shandx.pojo.User; import java.util.List; public interface UserMapper { <span clas ...
- Spring 文档汇总
Spring Batch - Reference Documentation Spring Batch 参考文档中文版 Spring Batch 中文文档 Table 2. JdbcCursorIte ...
- List如何一边遍历,一边删除?
1.新手常犯的错误 可能很多新手(包括当年的我,哈哈)第一时间想到的写法是下面这样的: public static void main(String[] args) { List<String& ...
- Java Log4j 配置文件
### 设置### log4j.rootLogger = debug,stdout,D,E ### 输出信息到控制抬 ### log4j.appender.stdout = org.apache.lo ...
- Python enumerate():使用计数器简化循环
摘要:当您需要计数和迭代中的值时,Pythonenumerate()允许您编写 Pythonicfor循环.最大的优点enumerate()是它返回一个带有计数器和值的元组,因此您不必自己增加计数器. ...
- collection库更新1.4.0版本
collection库更新1.4.0版本 collection库一直在使用中,周末集合github上的反馈以及contributor的修改,更新了1.4.0版本. 这个版本做了几个事情: 增加了三种类 ...
- Linux目录终章,单用户模式修改密码、环境变量、第三方软件安装
目录 今日内容概要 内容详细 解析映射文件 磁盘挂载文件 开机加载脚本 系统启动级别 使用单用户模式修改密码 变量加载文件 登录提示信息 第三方软件安装目录(编译安装目录) 系统日志目录 保存系统运行 ...
- 使用plantuml,业务交接就是这么简单
使用plantuml,业务交接就是这么简单 你好,我是轩脉刃. 最近交接了一个业务,原本还是有挺复杂的业务逻辑的,但发现交接过来的项目大有文章,在项目代码中有一个docs文件夹,里面躺着若干个 pum ...