今天做Astar,一个悲剧!
发现自己弱爆了!
两个小时,对于B题 思路很清晰,代码却写的不堪入目的!!!
我只能对自己说,小子你太菜了,还有的练啊,可是acm留给我的时间却不多了!
我只能抓紧时间提升自己,不给自己的acm留下太多遗憾。。。
下面是我B题的代码:写的太烂太烂,贴在这时时警醒自己!
//ceil(x)返回不小于x的最小整数值(然后转换为double型)。
//floor(x)返回不大于x的最大整数值。
//round(x)返回x的四舍五入整数值
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#include <queue>
#define PI 3.1415926535897932384626433832795
using namespace std;
long long x,a,b;
int main()
{
// freopen("in.txt","r",stdin);
// freopen("out.txt","w",stdout);
long long T;
long long i,j;
long long tmode;
long long xnum,anum,bnum;
long long tx,ta,tb;
long long st,en;
scanf("%I64d",&T);
while(T--)
{
scanf("%I64d %I64d %I64d",&x,&a,&b);
xnum=anum=bnum=1;
tx=x/10;
ta=a/10;
tb=b/10;
while(tx!=0) { tx/=10;xnum++;}
while(ta!=0) { ta/=10;anum++;}
while(tb!=0) { tb/=10;bnum++;}
//printf("%I64d %I64d %I64d\n",xnum,anum,bnum);
long long twei=int(pow(10,xnum)+0.5);
//printf("<<??%d??>>>\n",twei);
long long ttwei;
if(a<x)
st=x;
else
{
ttwei=a-twei*(a/twei);
//printf("1111??%d??\n",ttwei);
if(ttwei<=x)
st=a/twei*twei+x;
else
st=(a/twei+1)*twei+x;
}
if(b<x)
{
en=-1;
}
else
{
ttwei=b-twei*(b/twei);
//printf("2222??%d??\n",ttwei);
if(ttwei<x)
en=(b/twei-1)*twei+x;
else
en=(b/twei)*twei+x;
}
//printf("11<<%d %d>>\n",st,en);
long long temp=twei;
long long ok,ok2;
long long ans=0;
long long flag=0;
st/=temp;
en/=temp;
// printf("22<<%d %d>>\n",st,en);
for(i=0;i<20;i++)
{
ok=(long long)(pow(10,i)+0.5);
if(ok!=0) ok--;
if(ok>en)
break;
if(flag)
{
ok2=(long long)(pow(10,i-1)+0.5);
//printf("%d %d\n",ok,ok2);
ans+=(ok-ok2+1);
//printf("*******\n%I64d\n",(ok-ok2+1));
}
if(ok>=st && flag==0)
{
flag=1;
ans+=(ok-st+1);
//printf("*******\n%I64d\n",(ok-st+1));
}
}
ok2=(long long)(pow(10,i-1)+0.5);
ans+=(en-ok2+1);
printf("%I64d\n",ans);
}
return 0;
}