题面下载:https://icpc-camp-cdn.b0.upaiyun.com/permanent/problems/sichuan-2017.pdf
题目大意:
让你求a/b向下取整。
思路:
其实-9223372036854775808 / -1的值直接用LL类型去除是会出现问题的。
所以我们首先保存a和b的正负号,然后强转成LLU类型即可。
Ac代码:
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<iostream>
using namespace std;
#define ll long long int
int main()
{
ll a,b;
while(~scanf("%lld%lld",&a,&b))
{
int flag=0,flag2=0;
if(a<0)flag=1;
if(b<0)flag2=1;
flag+=flag2;
if(flag==0||flag==2)
{
unsigned long long int A=abs(a),B=abs(b);
unsigned long long int ans=(A/B);
printf("%llu\n",ans);
}
else
{
unsigned long long int A=abs(a),B=abs(b);
unsigned long long int ans=(A/B);
if(A%B!=0)ans++;
printf("-%llu\n",ans);
}
}
}