HDU ACM 1663
来源:互联网 发布:疯狂的美工自由布局 编辑:程序博客网 时间:2024/06/05 04:52
/************************************************************/
#include <iostream>
using namespace std;
long Result[10];
int Num;
int Pow10;
static void PreCheck( int n );
void Check( int a, int b );
int main()
{
int a, b;
int i;
while ( cin>>a>>b && a!=0 && b!=0 )
{
Check(a,b);
cout<<Result[0];
for ( i=1; i<= 9; i++ )
{
cout<<" "<<Result[i];
}
cout<<endl;
}
return 0;
}
static void PreCheck(int n)
{// 分析 <= n的所有数, and n>0
int i;
int R1, R2, Q;
while ( n != 0 )
{//对n从右至左逐位分析,分割成 [R2][Q][R1],Q位逐渐向左移
R1 = Num % Pow10;
Q = n % 10;
Pow10 *= 10;
R2 = Num / Pow10;
n /= 10;
if ( Q == 0 )
{// 处理0要注意
Result[0] += R1+1;
Result[0] += (R2 - 1) * Pow10 / 10;
}
else
{
Result[0] += R2 * Pow10 / 10;
}
for ( i=1; i<=9; i++ )
{
if ( i < Q )
{
Result[i] += (R2+1) * Pow10 / 10;
}
else if ( i == Q )
{// 处理0要注意
Result[i] += R1 + 1;
Result[i] += R2 * Pow10 / 10;
}
else
{
Result[i] += R2 * Pow10 / 10;
}
}
}
}
void Check( int a, int b )
{// 对满足a<= x <=b的数各位进行统计
int i;
int TempResult[10];
i = a<b?a:b;
b = a+b;
a = i;
b = b-i;
// make sure a <= b, then [a-1,b]
for ( i=0; i<=9; i++ )
Result[i] = 0;
Pow10 = 1;
Num = a-1;
PreCheck( a-1 );
for ( i=0; i<=9; i++ )
TempResult[i] = Result[i];
for ( i=0; i<=9; i++ )
Result[i] = 0;
Pow10 = 1;
Num = b;
PreCheck( b );
for ( i=0; i<=9; i++ )
Result[i] -= TempResult[i];
}
- HDU ACM 1663
- hdu-acm
- HDU ACM 2111 Saving HDU
- hdu acm hdu 2115 Java
- ACM HDU 1000
- ACM HDU 1001
- ACM HDU 1002
- ACM HDU 1004
- HDU ACM 1198
- hdu acm 2100 Lovekey
- hdu acm 1913 Computers
- ACM HDU 1003
- ACM HDU 1009
- HDU ACM 1058
- HDU ACM 1257
- HDU ACM 1506
- HDU ACM 2602
- HDU ACM 1176
- 3D Engine 的设计架构
- OGRE中的四元数与旋转
- Replace commands in VI editor.
- java.lang.Process类
- 验证数字的正则表达式集
- HDU ACM 1663
- java.lang.OutOfMemoryError: Java heap space Heap size
- SWT
- Ogre中的碰撞检测(完整版)
- 就要当爸爸的滋味
- 从Word里面导出图片的小技巧,导出图片的效果跟插入时的一样。
- DEBUG RELEASE 版本
- 与OGRE相关的概念
- VC获取Excel2003的工作表数