前言
试一试 小米的邀请赛hh
F.Fraction Comparision
秉承着 “坚决不碰除法” 的原则,我走歪了hh
手写了一个 _ _ i n t 128 \_\_int128 __int128之后发现是多组输入,
这个没法解决属于是(题目看完,没分析清楚就做了)
为什么有 "不碰除法"这个原则呢 ? 因为 A c m Acm Acm经常碰到取模运算(而取模不可以/)
但是对于该题我们只需要模拟即可
直接先比较整除部分,然后我们再比较取模部分
CODE
ll x,a,y,b;
while(cin>>x>>a>>y>>b)
{
ll num1 = x/a , num2 = y/b;
x%=a,y%=b;
if(num1>num2)
cout<<">"<<endl;
else
if(num1<num2)
cout<<"<"<<endl;
else
{
if(x*b > a*y)
cout<<">"<<endl;
else
if(x*b<a*y)
cout<<"<"<<endl;
else
cout<<"="<<endl;
}
}
B.Beauty Values
电脑没电了…
CODE
void solve()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
memset(vis,-1,sizeof vis);
ll ans = 0;
for(int i = 0;i<n;i++)
{
if(vis[a[i]]!=-1)
{
ans+=1ll*(n-i)*(i-vis[a[i]]);
}else
ans+=1ll*(n-i)*(i+1);
vis[a[i]] = i;
}
cout<<ans<<endl;
}
void solve()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int x;cin>>x;
int l,r;
if(last[x].empty()){
l = 1, r= n;
}else{
l = last[x].back()+1;
r= n ;
}
last[x].pb(i);
ll t ;
if(i == 1)
t = r-l+1;
else
if(l == r)
t = 1;
else
t = 1ll*(r-i+1)*(i-l+1);
ans+=t;
}
cout<<ans<<endl;
}