产生数(floyd)


如果1可以变换到2,2可以变换到3,那么1可以变换到3,这可以用Floyd算法,要注意一点的是,其它数不可以变换到零,而零可以变到其它数,
我的高精度算法一开始是错的,我的做法会导致进位的数也乘了s,在最后要处理carry,但要记得carry/10,不然会成死循环

#include<iostream>
#include<cstring>
using namespace std;
int f[20][20];
int cnt[50];
int main(){
    string str;
    int m;
    cin>>str>>m;
    for(int i=1;i<=m;i++){
        int x,y;
        cin>>x>>y;
        f[x][y]=1;
    }
    for(int k=1;k<=9;k++){
        for(int i=0;i<=9;i++){
            for(int j=1;j<=9;j++){
                if(f[i][k]&&f[k][j])f[i][j]=1;
            }
        }
    }
    for(int i=1;i<=9;i++)f[i][i]=1;
    for(int i=0;i<=9;i++){
        for(int j=1;j<=9;j++){
            if(f[i][j])cnt[i]++;
        }
    }
    cnt[0]++;
   int a[1000]={0};
    int len=1;
    a[1]=1;
    long long int ans=1;
    for(int i=0;i<str.size();i++){
        int s=cnt[str[i]-'0'];
        int carry=0;
        for(int j=1;j<=len;j++){
            int temp=a[j]*s+carry;
            a[j]=temp%10;
            carry=temp/10;
        }
        while(carry)a[++len]=carry%10,carry/=10;
        
    };
    for(int i=len;i>=1;i--)cout<<a[i];
    return 0;
}
posted @   郭轩均  阅读(1)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示