小x的字符串(乘法原理)
来源:互联网 发布:淘宝客怎么查看佣金 编辑:程序博客网 时间:2024/06/06 12:47
题意:
小x有两个长度均为n的字符串s和w。小x认为s和w是不可比较的,当存在i和j (0<=i,j<=n),si>wi并且sj<wj。si表示字符串s中的第i个元素,相似的,wj表示字符串w中第j个元素。 字符串模板由数字和问号“?”构成,“?”并不会成对出现。 小x现在有两个长度为n的字符串模板。每个问号可以填不同的数或相同的数,小x想要计算填数的方案数,使得这两个字符串不可比较。最终得到的字符串可以包含前导零。 帮助小x计算出方案数除以1000000007的余数。
思路:
因为只要有一个大于或者小于他们就是不可比较的,所以只有他们全部大于等于或者全部小于等于时时可以计算出可以比较的,所以不可以比较的=所有的-可以比较的
程序:
ans,x,y,z,o:int64;begin x:=1; a[0]:=1; b[0]:=1; c[0]:=1; readln(n); readln(s1); readln(s2); for i:=1 to n do if (s1[i]='?') and (s2[i]='?') then begin a[i]:=(a[i-1]*55) mod p; b[i]:=(b[i-1]*55) mod p; c[i]:=(c[i-1]*10) mod p; x:=(x*100) mod p; end else if (s1[i]='?') then begin a[i]:=(a[i-1]*(ord(s2[i])-47)) mod p; b[i]:=(b[i-1]*(58-ord(s2[i]))) mod p; c[i]:=c[i-1]; x:=(x*10) mod p; end else if (s2[i]='?') then begin a[i]:=(a[i-1]*(58-ord(s1[i]))) mod p; b[i]:=(b[i-1]*(ord(s1[i])-47)) mod p; c[i]:=c[i-1]; x:=(x*10) mod p; end else if (s2[i]=s1[i]) then begin a[i]:=a[i-1]; b[i]:=b[i-1]; c[i]:=b[i-1]; end else if (s2[i]>s1[i]) then a[i]:=a[i-1] else b[i]:=b[i-1]; ans:=(x-a[n]-b[n]+c[n]+p) mod p; writeln(ans);end.
0 0
- 小x的字符串(乘法原理)
- javascript 字符串的乘法
- [c++] 大整数乘法(字符串乘法)
- 大数乘法的计算原理
- 实现两个字符串的乘法
- 洛谷[luogu] P1641 [SCOI2010]生成字符串(Catalan数(折线原理)+乘法逆元)
- leetcode:Multiply Strings(字符串的乘法)【面试算法题】
- 【字符串】大数的乘法(包括浮点数)
- [BZOJ4002][JLOI2015]有意义的字符串(结论+矩阵乘法)
- 【SCOI2010 DAY2】 字符串 --折线原理+乘法逆元
- 写的一个小的矩阵乘法
- MapReduce的矩阵乘法的原理
- 一个乘法小99的程序
- 打印乘法表的小程序
- 【bzoj4547】【小奇的集合】【矩阵乘法】
- 超长整数字符串乘法的算法
- 一个简单实现的字符串数字乘法。
- Multiply Strings 两个字符串的乘法
- 【J2SE】异常与异常处理
- 数据结构实验之链表八:Farey序列
- 罗马共和国最后的日子以及罗马帝国的灭亡
- VI的基本编辑命令-复制和粘贴(4)
- 记录生活&学习
- 小x的字符串(乘法原理)
- 2017年1月15日
- 485. Max Consecutive Ones \ 118. Pascal's Triangle
- Angular项目构建指南 - 不再为angular构建而犹豫不决
- 最长回文字符串常用求法
- 安卓实战——第三方服务之Bmob后端云(二)对数据的增、删、查、改。
- Dubbo点滴(3)之服务配置ServiceConfig
- 踹shu_Trie树
- Cannot start internal HTTP server. Git integration, JavaScript debugger and LiveEdit may operate wit