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个点的维度太大了,如果要进行机器学习的话参数太多, ...
随机推荐
- 基于tp5免费开源的后台管理系统
基于tp5免费开源的后台管理系统 可以自定义后台菜单,模块等. 后台模板用的是:AdminLTE 简单的后台基础管理系统,有兴趣开源看看 代码地址:https://github.com/mengzhi ...
- HashMap有几种遍历方法?推荐使用哪种?
本文已收录<面试精选>系列,Gitee 开源地址:https://gitee.com/mydb/interview HashMap 的遍历方法有很多种,不同的 JDK 版本有不同的写法,其 ...
- Go Robot
1 <html> 2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8 ...
- canal从mysql拉取数据,并以protobuf的格式往kafka中写数据
大致思路: canal去mysql拉取数据,放在canal所在的节点上,并且自身对外提供一个tcp服务,我们只要写一个连接该服务的客户端,去拉取数据并且指定往kafka写数据的格式就能达到以proto ...
- CentOS7 安装配置RocketMQ --主从模式(master-slave)异步复制
机器信息 192.168.119.129 主 192.168.119.128 从 配置host[两台机器] vim /etc/hosts 添加 192.168.119.129 rocketmq-nam ...
- 【leetcode】721. Accounts Merge(账户合并)
Given a list of accounts where each element accounts[i] is a list of strings, where the first elemen ...
- ComponentScan注解的使用
在项目初始化时,会将加@component,@service...相关注解的类添加到spring容器中. 但是项目需要,项目初始化时自动过滤某包下面的类,不将其添加到容器中. 有两种实现方案, 1.如 ...
- Advanced C++ | Conversion Operators
In C++, the programmer abstracts real world objects using classes as concrete types. Sometimes it is ...
- C++易错小结
C++ 11 vector 遍历方法小结 方法零,对C念念不舍的童鞋们习惯的写法: void ShowVec(const vector<int>& valList) { int c ...
- springboot中如何向redis缓存中存入数据
package com.hope;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jack ...