(ssl 1021 洛谷 1037)产生数#floyd#

2024-02-11 06:58
文章标签 ssl 产生 洛谷 1021 floyd 1037

本文主要是介绍(ssl 1021 洛谷 1037)产生数#floyd#,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

给出一个整数 n n n k k k 个规则。
经过任意次的变换(0次或多次),能产生出多少个不同整数。仅要求输出个数。


分析

首先这道题明显的 最短路径(难道还用深搜)
根据乘法原理答案等于0~9的状态数乘积
n超过30位,根据分析最大答案也就10^30了。
所以数组只用开到三十(为了保险,开到一百)
so其实虽然我知道__int 128,但是毕竟学校题库编译错误,所以还是得用高精度。
然后关键就是这种情况
2 1
3 2
4 3
5 4
6 5
7 6
8 7
9 8
0 9
所以需要最短路径。

#include <cstdio>
#include <cctype>
using namespace std;
const int maxn=100;
char b[maxn+1]; int n,x,y,c[11],a[11];
bool g[11][11];
void times(int s){//高精度乘法int g=0,h=0;for (int i=maxn;i>=1;i--){h=s*b[i]+g;g=h/10;b[i]=h%10;}
}
void print(){//输出int j=1;while (j<maxn&&!b[j]) j++;for (int i=j;i<=maxn;i++) putchar(b[i]+48);
}
int main(){char u=getchar();while (isdigit(u)) a[u-48]++,u=getchar();scanf("%d",&n); b[maxn]=1;for (int i=1;i<=n;i++) scanf("%d%d",&x,&y),g[x][y]=1;for (int i=0;i<=9;i++) g[i][i]=1;//自己也是状态for (int k=0;k<=9;k++)for (int i=0;i<=9;i++)for (int j=0;j<=9;j++)g[i][j]=(g[i][j]||(g[i][k]&&g[k][j]));//判断是否连通的floydfor (int i=0;i<=9;i++)for (int j=0;j<=9;j++) c[i]+=g[i][j];//计算状态数for (int i=0;i<=9;i++)for (int j=1;j<=a[i];j++) times(c[i]);print(); return 0;
}

这篇关于(ssl 1021 洛谷 1037)产生数#floyd#的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/699137

相关文章

uva 10099(floyd变式)

题意: 有一个导游要带着一群旅客从一个城市到达另一个城市,每个城市之间有最大的旅客流量限制。 问最少几趟能将这些旅客从一个城市搞到另一个城市。 解析: 用floyd找出最小流量中的最大边,然后次数就是   ceil(总人数 / 最大承载量 - 1),-1的意思是导游每次也要在车上。 ps.老司机哭晕在厕所 代码: #include <iostream>#includ

uva 10048(floyd变式)

题意: 求两个点之间经过的路径中最大噪声最小的值。 解析: floyd的变式,每次取g[i][k] g[k][j]中的大边与当前边g[i][j]比较,取小。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#includ

poj 1734 (floyd求最小环并打印路径)

题意: 求图中的一个最小环,并打印路径。 解析: ans 保存最小环长度。 一直wa,最后终于找到原因,inf开太大爆掉了。。。 虽然0x3f3f3f3f用memset好用,但是还是有局限性。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#incl

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

hdu 4517 floyd+记忆化搜索

题意: 有n(100)个景点,m(1000)条路,时间限制为t(300),起点s,终点e。 访问每个景点需要时间cost_i,每个景点的访问价值为value_i。 点与点之间行走需要花费的时间为g[ i ] [ j ] 。注意点间可能有多条边。 走到一个点时可以选择访问或者不访问,并且当前点的访问价值应该严格大于前一个访问的点。 现在求,从起点出发,到达终点,在时间限制内,能得到的最大

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到

nyoj 1037 Postscript of Tian Ji racing

一道卡贪心的题。 也算一道改编题。 此题的解法推荐为二分图的最大匹配。 首先将输入数据转换一下,然后将满足题意的一组牌建立条边,最终边的覆盖数即为 LN 最后可得的分数。 然后求出最大匹配即可。 代码如下: #include<stdio.h>#include<string.h>char card[30][5];char s[5];int map[30][30];

高精度计算(代码加解析,洛谷p1601,p1303)除法待更新

目录 高精度加法 高精度减法 高精度乘法 高精度加法 我们知道在c++语言中任何数据类型都有一定的表示范围。当两个被加数很大时,正常加法不能得到精确解。在小学,我们做加法都采用竖式方法。那么我们也只需要按照加法进位的方式就能得到最终解。 8 5 6+ 2 5 5-------1 1 1 1 加法进位: c[i] = a[i] + b[i];if(c[i] >=

828华为云征文|基于Flexus云服务器X实例的应用场景-拥有一款自己的ssl监控工具

先看这里 写在前面效果图华为云Flexus云服务器X实例介绍特点可选配置购买 连接服务器Uptime-kuma简介开源信息部署准备工作:docker部署命令访问uptime-kuma 基本配置总结 写在前面 作为一个个人开发者,相信你手里肯定也有不少自己的服务,有的服务呢也是https的。 以前ssl各厂都是可以免费申请一年的,我们更换的频率还好,比较小;但是最近,各厂都