直接用错排求得结果就好了,四舍五入不必考虑,因为程序取两位小数本来就是四舍五入的
#include
using namespace std;
double a[21];
int main()
{
double x=1;
int i;
a[1]=0;
for(i=2;i<=20;i++)
{
x=x*i;
if(i&1)
a[i]=a[i-1]-1.0/x;
else
a[i]=a[i-1]+1.0/x;
}
int T;
scanf("%d",&T);
while(T--)
{
scanf("%d",&i);
printf("%.2lf%c\n",a[i]*100,'%');
}
return 0;
}