题目链接 http://poj.org/problem?id=1608

写的不太好,不过还是过了,题解过两天写,先放代码

数据地址:http://neerc.ifmo.ru/archive/2003.html 选那个Subregions Northern

请无视注释部分,那是调试代码

<pre name="code" class="cpp">#include <cstdio>
#include <cstring>
const int N=19,M=10000;
long long f[3][55][37][20][20];
bool fl=false,fr=false;
int n,ln,rn,l2,l3,l5,l7,r2,r3,r5,r7;
int n2[10]={0,0,1,0,2,0,1,0,3,0};
int n3[10]={0,0,0,1,0,0,1,0,0,2};
int n5[10]={0,0,0,0,0,1,0,0,0,0};
int n7[10]={0,0,0,0,0,0,0,1,0,0};
struct big{int f[20],l;
}ans,a1,b1;
void print(big a){for(int i=a.l-1;i>=0;i--){int j=M/10;if(i!=a.l-1)while(a.f[i]<j && j>1)j/=10,printf("0");printf("%d",a.f[i]);}if((a.l==1 && a.f[0]==0) || a.l<1) printf("0");
}
long long pow(int x,int y){ long long ans=1;for(int i=1;i<=y;i++) ans*=x;return ans;
}
big cmp(big a,big b){if(a.l>b.l) return a;else if(a.l<b.l)    return b;for(int i=a.l-1;i>=0;i--)if(a.f[i]>b.f[i]) return a;else if(a.f[i]<b.f[i])  return b;return a;
}
void tran(big &a,long long b){a.l=0;while(b)   a.f[a.l++]=b%M,b/=M;
}
big add(big a,big b){big c=cmp(a,b);int jw=0;for(int i=0;i<c.l;i++){c.f[i]=jw;if(i<a.l) c.f[i]+=a.f[i];if(i<b.l)   c.f[i]+=b.f[i];jw=c.f[i]/M,c.f[i]%=M;}if(jw)    c.f[c.l++]=jw;while(!c.f[c.l-1] && c.l)  c.l--;return c;
}
big minus(big a,big b){int jw=0;for(int i=0;i<a.l;i++){a.f[i]-=jw;if(i<b.l)  a.f[i]-=b.f[i];if(a.f[i]<0) jw=1,a.f[i]+=M;}while(!a.f[a.l-1] && a.l)    a.l--;return a;
}
big smul(big a,int b,int dig){int jw=0;for(int i=0;i<a.l;i++){a.f[i]*=b,a.f[i]+=jw;jw=a.f[i]/M,a.f[i]%=M;}while(jw) a.f[a.l++]=jw%M,jw/=M;while(!a.f[a.l-1] && a.l) a.l--;for(int i=a.l-1;i>=0;i--) a.f[i+dig]=a.f[i];for(int i=0;i<dig;i++) a.f[i]=0;a.l+=dig;return a;
}
big mul(big a,big b){big c,d;memset(c.f,0,sizeof(c.f)),c.l=0;for(int i=0;i<b.l;i++){d=smul(a,b.f[i],i);c=add(c,d);}while(!c.f[c.l-1] && c.l)   c.l--;return c;
}
void spj(int sp){if(sp==-1)if((l2==r2 &&l3==r3 && l5==r5 && l7==r7) || (fr && fl))    printf("1\n0");else printf("0\n1");ans.l=ans.f[0]=0;if(sp==0){tran(a1,pow(10,ln)),tran(b1,pow(10,rn));ans=mul(a1,b1);print(ans),printf("\n0");}if(sp==1){tran(a1,pow(10,rn));tran(b1,pow(9,rn));big c1=minus(a1,b1);tran(a1,pow(10,ln));ans=add(ans,mul(a1,c1));print(ans),printf("\n");tran(a1,pow(10,ln));tran(b1,pow(10,rn));ans=minus(mul(a1,b1),ans);print(ans);}if(sp==2){tran(a1,pow(10,ln));tran(b1,pow(9,ln));big c1=minus(a1,b1);tran(a1,pow(10,rn));ans=add(ans,mul(a1,c1));print(ans),printf("\n");tran(a1,pow(10,ln));tran(b1,pow(10,rn));ans=minus(mul(a1,b1),ans);print(ans);}
}
int main(){scanf("%d\n",&n);for(int i=1;i<=n;i++){char c;scanf("%c",&c);if(c=='?')   ln++;if(c=='0')   fl=true;else l2+=n2[c-'0'],l3+=n3[c-'0'],l5+=n5[c-'0'],l7+=n7[c-'0'];}for(int i=1;i<=n;i++){char c;scanf("%c",&c);if(c=='?')  rn++;if(c=='0')   fr=true;else r2+=n2[c-'0'],r3+=n3[c-'0'],r5+=n5[c-'0'],r7+=n7[c-'0'];}if(!ln && !rn)   {spj(-1);return 0;}else if(fr && fl)    {spj(0);    return 0;}else if(!fr && fl)    {spj(1); return 0;}else if(fr && !fl)   {spj(2); return 0;}f[0][0][0][0][0]=1;int l1,r1,n1,m1;if(ln>=rn)   l1=ln&1,r1=2,n1=ln,m1=rn;else l1=2,r1=rn&1,n1=rn,m1=ln;if(!m1)  f[2][0][0][0][0]=1;for(int i=0;i<n1;i++){memset(f[~i&1],0,sizeof(f[~i&1]));for(int j=1;j<=9;j++)for(int i2=0;i2<=i*3;i2++)for(int i3=0;i3<=i*2;i3++)for(int i5=0;i5<=i;i5++)for(int i7=0;i7<=i;i7++)f[~i&1][i2+n2[j]][i3+n3[j]][i5+n5[j]][i7+n7[j]]+=f[i&1][i2][i3][i5][i7];//f[~i&1][0][0][0][0]=1;if(i+1==m1) memcpy(f[2],f[~i&1],sizeof(f[~i&1]));}ans.l=ans.f[0]=0;
//  for(int i2=0;i2<=n1*3;i2++)
//      for(int i3=0;i3<=n1*2;i3++)
//          for(int i5=0;i5<=n1;i5++)
//              for(int i7=0;i7<=n1;i7++)
//                  printf("f[%d][%d][%d][%d][%d]: %lld\n",r1,i2,i3,i5,i7,f[r1][i2][i3][i5][i7]);for(int i2=0;i2<=n1*3;i2++)for(int i3=0;i3<=n1*2;i3++)for(int i5=0;i5<=n1;i5++)for(int i7=0;i7<=n1;i7++)if(i2+l2>=r2 && i3+l3>=r3 && i5+l5>=r5 && i7+l7>=r7){if(!f[l1][i2][i3][i5][i7] || !f[r1][i2+l2-r2][i3+l3-r3][i5+l5-r5][i7+l7-r7])continue;tran(a1,f[l1][i2][i3][i5][i7]);tran(b1,f[r1][i2+l2-r2][i3+l3-r3][i5+l5-r5][i7+l7-r7]);//printf("f[%d][%d][%d][%d][%d]*f[%d][%d][%d][%d][%d]\n",l1,i2,i3,i5,i7,r1,i2+l2-r2,i3+l3-r3,i5+l5-r5,i7+l7-r7);//print(a1),printf("**"),print(b1),printf("\n");ans=add(ans,mul(a1,b1));}//print(ans),printf("\n");tran(a1,pow(10,ln));tran(b1,pow(9,ln));big c1=minus(a1,b1);tran(a1,pow(10,rn));tran(b1,pow(9,rn));a1=minus(a1,b1);ans=add(ans,mul(a1,c1));print(ans),printf("\n");tran(a1,pow(10,ln));tran(b1,pow(10,rn));ans=minus(mul(a1,b1),ans);print(ans);return 0;
}

POJ1608 Banal Tickets相关推荐

  1. 100725B Banal Tickets

    传送门 题目大意 有2*n个位置,这些位置有的已经填上了数,有的还没有(用?表示),现在让你在还没有填上数的填0~9中的任意数,使得前n个数的乘积等于后n个数的乘积,问有多少种方案. 分析 首先这个题 ...

  2. [Codeforces Gym 101651/100725B] Banal Tickets

    Codeforces Gym 100725 题解: 先分两种情况, 积为000与积非0" role="presentation" style="position ...

  3. POJ 1608 Banal Tickets 笔记

    2N位数,部分数字模糊不清.如果前N位数的乘积等于后N位的乘积被认为是 interesting数,否则是banal数.求可能有多少 interesting数,多少 banal数. 

  4. POJ的题目分类(两个版本)

    版本一: 简单题 1000A+B Problem 1001Exponentiation 1003 Hangover 1004 Financial Management 1005 I Think I N ...

  5. POJ前面的题目算法思路【转】

    1000 A+B Problem 送分题 49% 2005-5-7 1001 Exponentiation 高精度 85% 2005-5-7 1002 487-3279 n/a 90% 2005-5- ...

  6. POJ 超详细分类

    POJ 各题算法 1000    A+B Problem            送分题     49%    2005-5-7 1001    Exponentiation         高精度   ...

  7. 【POJ】2828 Buy Tickets(线段树+特殊的技巧/splay)

    http://poj.org/problem?id=2828 一开始敲了个splay,直接模拟. tle了.. 常数太大.. 好吧,说是用线段树.. 而且思想很拽.. (貌似很久以前写过貌似的,,) ...

  8. java Thread 类的几种方法

    //后台进程 /** 对于java来说只要还有一个前台线程在运行,这个进程就不结束,如果一个进程* 只有后台线程,这个进程就会结束*/ package xian_cheng;public class ...

  9. owaspbwa tickets

    owaspbwa tickets 来源  https://sourceforge.net/p/owaspbwa/tickets/ 192 SQL Injection in pic_id paramet ...

最新文章

  1. WordPress工作原理之程序文件执行顺序
  2. docker oom 排查过程
  3. linux promisc 作用,linux 下怎樣查看網卡是否支持混雜(promisc)模式
  4. mybatis+Druid连接池的问题
  5. 面向对象思想----不看懊悔!
  6. 修改官方发行openstack镜像的cloud-init登录方式为账号密码登录
  7. 在Vue+springBoot环境中如何实现单点登录(SSO)
  8. 当航运遇上区块链: 有人在砸钱,有人想上车
  9. yum配置和文泉驿字体安装
  10. 21个最具代表性的英国著名地标建筑
  11. KICAD——手动生成嘉立创可识别的BOM和POS文件
  12. 怎么把数组转化成字符串呢?有没有现成的函数呢?
  13. Linux指定网卡名称
  14. Victor ti99不错
  15. mathtype手动延期
  16. python写的百度贴吧邮箱采集(带界面)
  17. centos怎么用命令关机_CentOS关机命令
  18. 树的Breadth-First-Search和Depth-First-Search的java实现
  19. IDEA插件 阿里巴Java编码指南插件支持
  20. c8.cn 6cai.html,DotA Allstars v6.70c AI

热门文章

  1. python写手机应用宝下载_APK 批量爬取脚本(应用宝和360市场)
  2. ctf-wp-mmmmpy
  3. HTML5期末大作业:汉堡美食网站设计——餐饮美食-汉堡美食(6页) HTML+CSS+JavaScript 汉堡美食 咖啡主题HTM5网页设计作业成品
  4. Java Web研发工程师新手入门指南
  5. 鼎信通达MTG3000/MTG2000中继网关双重应用组网
  6. 苹果手机中计算机功能是什么,如何将苹果11手机中的内容和隐私访问限制功能关闭...
  7. js过滤对象中值为空的属性
  8. LOH杂合性缺失简介
  9. 抖抖口红机java版本_抖音全民口红机
  10. 使用 Prometheus-Operator 监控 Calico