poj2282The Counting Problem(组合)
计算0-9每一个数字出现的次数 逐位进行处理 对于每一位取几时依次算下组合的情况 注意0的情况需要特殊处理一下 因为0000 00 这样都是等于0的 前面的几位是多余的
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
#include<vector>
#include<cmath>
#include<queue>
#include<set>
using namespace std;
#define N 100000
#define LL long long
#define INF 0xfffffff
const double eps = 1e-;
const double pi = acos(-1.0);
const double inf = ~0u>>;
int d[],dd[];
int an[];
void judge(int xx,int x[],int f)
{
if(!xx) return ;
int i,j,e;
int p[],g=;
int y = xx;
while(xx)
{
p[++g] = xx%;
xx/=;
}
int o = ;
x[]+=;
for(i = g ; i >= ; i--)
{
for(i==g?j = :j= ; j < p[i] ; j++)
{
x[j]+=pow(10.0,g-o);
}
for(j = i- ; j>= ; j--)
{
int ko;
if(i==g)
{
if(j==i-)
ko = pow(10.0,g-o-)*(p[i]-);
else
ko = pow(10.0,g-o-)*(p[i]-)+(pow(10.0,(i-j-))-)*pow(10.0,j-);
}
else ko = pow(10.0,g-o-)*p[i];
//cout<<ko<<" "<<i<<" "<<j<<" "<<o<<endl;
x[]+=ko;
for(e = ; e <= ; e++)
{
x[e]+=pow(10.0,g-o-)*p[i];
}
}
int k = pow(10.0,g-o);
x[p[i]] += y%k+;
o++;
} if(f)
{
for(i = ;i <= g ;i++)
x[p[i]]--;
}
}
int main()
{
int i,a,b;
while(cin>>a>>b)
{
if(!a&&!b) break;
if(a>b) swap(a,b);
memset(d,,sizeof(d));
memset(dd,,sizeof(dd));
judge(a,d,);
judge(b,dd,);
for(i = ;i < ;i++)
cout<<dd[i]-d[i]<<" ";
cout<<dd[]-d[]<<endl;
}
return ;
}
poj2282The Counting Problem(组合)的更多相关文章
- UVA 1640 The Counting Problem UVA1640 求[a,b]或者[b,a]区间内0~9在里面各个数的数位上出现的总次数。
/** 题目:UVA 1640 The Counting Problem UVA1640 链接:https://vjudge.net/problem/UVA-1640 题意:求[a,b]或者[b,a] ...
- 『The Counting Problem 数位dp』
The Counting Problem Description 求 [L,R]内每个数码出现的次数. Input Format 若干行,一行两个正整数 L 和 R. 最后一行 L=R=0,表示输入结 ...
- POJ2282 The Counting Problem
题意 Language:DefaultEspañol The Counting Problem Time Limit: 3000MS Memory Limit: 65536K Total Submis ...
- The Counting Problem
The Counting Problem 询问区间\([a,b]\)中\(1\sim 9\)出现的次数,0 < a, b < 100000000. 解 显然为数位递推,考虑试填法,现在关键 ...
- UVa 1640 - The Counting Problem(数论)
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA 1640 The Counting Problem
https://vjudge.net/problem/UVA-1640 题意:统计区间[l,r]中0——9的出现次数 数位DP 注意删除前导0 #include<cmath> #inclu ...
- [POJ 2282] The Counting Problem
[题目链接] http://poj.org/problem?id=2282 [算法] 数位DP [代码] #include <algorithm> #include <bitset& ...
- POJ2282:The Counting Problem(数位DP)
Description Given two integers a and b, we write the numbers between a and b, inclusive, in a list. ...
- UVa 1640 (计数) The Counting Problem
题意: 统计[a, b]或[b, a]中0~9这些数字各出现多少次. 分析: 这道题可以和UVa 11361比较来看. 同样是利用这样一个“模板”,进行区间的分块,加速运算. 因为这里没有前导0,所以 ...
随机推荐
- 注意css 小细节 颜色能缩写尽量缩写
如 background: #333333; 改为 background: #333;
- atomic_cmpxchg()/Atomic_read()/Atomic_set()/Atomic_add()/Atomic_sub()/atomi
[ 1.atomic_read与atomic_set函数是原子变量的操作,就是原子读和原子设置的作用.2.原子操作,就是执行操作的时候,其数值不会被其它线程或者中断所影响3.原子操作是linux内核中 ...
- hdu 1027 Ignatius and the Princess II(产生第m大的排列,next_permutation函数)
题意:产生第m大的排列 思路:使用 next_permutation函数(头文件algorithm) #include<iostream> #include<stdio.h> ...
- magento导入数据的方法
导入演示数据 分两种情况处理. 如果你是用composer方式安装的 非常简单,二行命令搞定:在项目根目录下执行.我们的是在/var/www/magento2/下面. 安装演示数据 php bin/m ...
- ASP.NET Core:WebAppCoreApi
ylbtech-ASP.NET Core:WebAppCoreApi 1.返回顶部 1. 2. 3. 4. 2. Controllers返回顶部 1.ValuesControlle ...
- node fs模块
Node.js的文件系统的Api //公共引用 var fs = require('fs'), path = require('path'); 1.读取文件readFile函数 //readFile( ...
- 【旧文章搬运】CsrssWalker学习笔记
原文发表于百度空间及看雪论坛,2009-05-13 看雪论坛地址:https://bbs.pediy.com/thread-89708.htm============================= ...
- 堆、栈的区别 <转载>
本篇非作者原创,转子链接,仅供学习记录. 一.预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值 ...
- 算法练习--LeetCode--29. Divide Two Integers
Divide Two Integers Given two integers dividend and divisor, divide two integers without using multi ...
- C++开发工程师面试题库 200~250道
199 MFC中SendMessage和PostMessage的区别?答:PostMessage 和SendMessage的区别主要在于是否等待应用程序做出消息处理.PostMessage只是把消息 ...