5.934984 会被编译器认为是6 有没有大佬能讲一下
#include<bits/stdc++.h>
using namespace std;
long long arr[100005];
int que[100005]; //油的价格
int cost[100005];//存放编号
int main(){
int i,j,k;
int n,dist;
cin>>n>>dist;
for(i=2;i<=n;i++){
cin>>arr[i];
arr[i]+=arr[i-1];
}
int pos=0;
que[0]=1e7;
for(i=1;i<=n;i++){
int a;
cin>>a;
if(que[pos]>a){
pos++;
que[pos]=a;
cost[pos]=i;
}
}
long long ans=0;
long long excess=0;
for(i=1;i<=pos;i++){
if(i==pos){
long long distCur=arr[n]-arr[cost[pos]];
int costCur=que[i];
// cout<<distCur<<endl;
distCur=distCur-excess;
long long juli=(distCur)/dist;
//cout<<juli<<endl;
if(juli*dist<distCur){
juli++;
}
ans+=costCur*(juli);
break;
}
int next1=cost[i+1];
long long costCur=que[i];
long long distCur=arr[next1]-arr[cost[i]];
distCur=distCur-excess;
excess=0;
long long juli=(distCur)/dist;
if(juli*dist<distCur){
juli++;
excess=juli*dist-distCur;
}
ans+=costCur*juli;
// cout<<ans<<endl;
}
cout<<ans;
return 0;
}
你用的都是int,long long。5.934984这种数要用double存
我是说对于int 的整除 57510/9690 是5.9349845用 int tmp= 57510/9690 tmp 的值应该是下取整是5 但是实际情况是6