首页 > 代码库 > heu acm基础训练 1001
heu acm基础训练 1001
哈尔滨工程大学 online judge acm训练之分治算法
原题大意:求a ,b,之间的数有多少个1,包括a,b.
这题典型的分治算法;
举例说明:
以197为例:
那么我们将其分为个位,十位,个位7上有一个,那么在190~197上有7+1个
然后整十位上的为18,即197/10-1,然后其权值将变为10。如此进行。
源代码:
#include<stdio.h>
#define N 11
int d[N],value;
int deal(int n)
{
int one ,ten ;
if(t<=0)
one=n%10;
ten=n/10;
n/=10;
for(int i=0;i<=one;i++)
d[i]+=value;
while(ten)
{
d[ten%10]+=value*(one+1);
ten/=10;
}
for(int i=0;i<N;i++)
d[i]+=value*n;
d[0]-=value;
value*=10;
deal(n-1);
}
int main()
{
int a,b;
while(scanf("%d%d",&a,&b))
{
if(!a,!b)
break;
if(a<b)
swap(a,b);
value=http://www.mamicode.com/1;
deal(a);
value=http://www.mamicode.com/-1;
deal(b-1);
printf("%d\n",d[1]);
}
}
d【】中存有0~9的个数,题目的话只用d[1]即可。
heu acm基础训练 1001
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。