#include <bits/stdc++.h>
using namespace std;
int main()
{
int t,s,x;
scanf("%d%d%d",&t,&s,&x);
if(x<t) printf("NO\n");
else if((x-t)/s>0)
{
if((x-t)%s==0||(x-t)%s==1)
printf("YES\n");
else printf("NO\n");
}
else if(x==t)
printf("YES\n");
else printf("NO\n");
return 0;
}
本来不是很难的一道题,但是最后被hack掉了,忘记考虑当d为0且b也为0的情况了,不能输出a.0这样的数
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
int b=0,fg=1;
cin>>s;
int len=s.size();
int pos=s.find('e');
for(int i=pos+1;i<len;i++)
{
if(s[i]=='-')
fg=-1;
else b=b*10+s[i]-'0';
}
b*=fg;
s.erase(pos);
s.erase(1,1);
if(s.size()==2&&s[1]=='0'&&b==0)
{
printf("%c\n",s[0]);
}
else if(b<0)
{
printf("0.");
for(int i=0;i<abs(b);i++)
printf("0");
cout<<s<<endl;
}
else if(b>=s.size()-1)
{
cout<<s;
int x=b-s.size()+1;
for(int i=0;i<x;i++)
printf("0");
}
else
{
s.insert(b+1,".");
cout<<s<<endl;
}
return 0;
}
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int main()
{
int q;
map<ll,ll>t;
scanf("%d",&q);
for(int i=0;i<q;i++)
{
int a;
ll u,v,w;
scanf("%d",&a);
if(a==1)
scanf("%I64d%I64d%I64d",&u,&v,&w);
else
{
scanf("%I64d%I64d",&u,&v);
w=0;
}
ll ans=0;
while(u!=v)
{
if(u>v)
{
t[u]+=w;
ans+=t[u];
u/=2;
}
else{
t[v]+=w;
ans+=t[v];
v/=2;
}
}
if(a==2)
printf("%I64d\n",ans);
}
return 0;
}