51nod 1042 数字0-9的数量
来源:互联网 发布:蜂鸟众包提现网络出错 编辑:程序博客网 时间:2024/06/05 06:27
51nod 1042 数字0-9的数量
这是一开始自己想的方法 然后超时
#include<iostream>#include<cstdio>using namespace std; void find(long long a,long long *num){ while(a){ int c=a%10; num[c]++; a=a/10; } }int main(){ long long a,b; while(scanf("%lld%lld",&a,&b)!=EOF){ long long num[11]={0};//初始化为零 if(a<=0||b<=0)break; for(long long i=a;i<=b;i++)find(i,num); for(int i=0;i<10;i++)printf("%lld\n",num[i]); }}
网上百度了别人的解决方案 感觉不错
#include <iostream> #include<bits/stdc++.h> #define ll long long using namespace std; void dfs(ll a,ll b,ll c[]) { ll n=a/10,m=a%10,t=n; for(int i=0;i<=m;i++) c[i]+=b;//当前位对低位的影响 for(int i=0;i<10;i++) c[i]+=b*n;//高位对低位的影响 c[0]-=b;//0特殊处理,将多算的0减去 while(t)//当前位对高位的影响 { c[t%10]+=b*(m+1);//加上0 t/=10; } if(n) dfs(n-1,b*10,c);//n已经处理过,所以要处理n-1 } ll x[20],y[20]; int main() { ll a,b; cin>>a>>b; dfs(a-1,1,x); dfs(b,1,y); for(int i=0;i<10;i++) cout<<y[i]-x[i]<<endl; }
0 0
- 51nod 1042:数字0-9的数量
- 51nod 1042 数字0-9的数量 数位DP
- 51nod 1042 数字0~~9的数量
- 51Nod-1042-数字0~9的数量
- 51NOD 1042 数字0-9的数量 数位DP
- 51nod 1042 数字0-9的数量(数位dp)
- 51nod-【1042 数字0-9的数量】
- 51nod-1042 数字0-9的数量
- 51nod 1042 数字0-9的数量
- 51Nod 1042 数字0-9的数量
- 51nod 1042 数字0-9的数量【数位dp】
- 51nod 1042 数字0-9的数量
- 51Nod 1042 数字0-9的数量 (数位DP
- 51nod 1042 数字0-9的数量 数位DP
- 51nod 1042 数字0-9的数量
- 51Nod 1042 数字0-9的数量
- 数位dp 总结 51nod数字1的数量 数字0-9的数量
- 51nod数字0-9的数量(数位dp)
- equals方法特性
- webservice soap wsdl
- 单链表逆序
- Java常用包名及功能
- 一个初级python web后端开发工程师的面试总结
- 51nod 1042 数字0-9的数量
- 为什么全表扫描成本(COST)公式里面要除以sreadtim
- Android 状态栏操作,你想知道的都在这里了
- char str1[]="abc"; char str2[]="abc";str1与str2不相等,为什么
- idea java compiler error
- 【JZOJ4941】宝石魔术 题解
- 算法-简介
- Query接口中list()与iterator()查询的区别
- 指针和内存