小蒲非常喜欢刷b站,天天都去刷,作为2017年才加入b站的,了好多年,积攒了上千的硬币,以至于他现在才5级,于是他想要快速积攒经验,众所周知,每天b站会给登录用户1枚硬币,1枚硬币的经验值为10经验值,每天最多可以投5枚硬币获得经验值,也就是每一天可以通过投币最多获得50经验,他想要以最快的方式通过投币获得最多的经验,直到他的硬币数为0时停止投币,请问他这期间能获得的经验值为多少,经过了多少天?
输入格式:
第一行输入一个整数T,代表数据的组数
接下来的T行,每一行有一个整数n,代表他今天拥有的硬币数(已经获得当天的奖励硬币)
输出格式:
输出T行,每一行两个数a,b,a代表他所获得的经验值,b代表经过了多少天。
输入样例:
1
6
输出样例:
70 2
样例解释
第一天:他拥有6枚硬币,他投5枚,获得了50点经验值。
第二天:奖励一枚硬币,他拥有2枚硬币,他投2枚,获得了20点经验值,剩余0枚硬币。
如果按流程写会超时,这样写出来案例对,但现实答案错误,实在不知道哪错了
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int n,b=0,day=1,i,j,flag=0;
long long exp=0,d=0;
cin>>n;
for(i=0; i<n; i++) {
cin>>b;
day=1;
flag=0;
exp=0;
if(b<=5){
day=1;
exp=b*10;
}else{
exp=((b-2)/4+b)*10;
day=(b-2)/4+1 ;
}
cout<<exp<<" "<<day<<endl;
}
return 0;
}
数据范围及约定
题目测试数据集保证T<=10000,1<=n<=1e12