注册 登录
编程论坛 C++教室

这里的a,b为什么要定义longlong

bug芒果核 发布于 6 天前 12:25, 274 次点击
输入
一行三个正整数 a b,n
输出
一行,输出 a÷b四舍五入保留到小数点后第n位后的结果
输入样例
8 3 6
输出样例
2.666667
数据范围
1⩽a⩽109,1⩽b⩽109,1⩽n⩽100

#include<stdio.h>
int main(){
    long long a,b,c;
    int n;
    int ans[105];
    scanf("%lld%lld%d",&a,&b,&n);
    for(int i=0;i<=n;i++){
        ans[i]=a/b;
        c=a%b*10;
        a=c;
    }
    if(a/b>=5) ans[n]++;
    for(int i=n;i>0;i--){
        if(ans[i]>=10){
            ans[i]-=10;
            ans[i-1]++;
        }
        else break;
    }
    printf("%d.",ans[0]);
    for(int i=1;i<=n;i++){
        printf("%d",ans[i]);
    }
    return 0;
开始我定义int提交是wa
2 回复
#2
rjsp6 天前 20:45
a%b*10 最大是
999999999%1000000000*10
需要至少 34bits 的有效位
#3
bug芒果核5 天前 16:13
哦哦原来如此
1