题目链接:https://acm.ecnu.edu.cn/contest/73/problem/A/
这道题感觉很巧妙,用java的话挺好写的,但是需要用BigDecimal去写,也没有保留小数就能AC了。然后用C++的话,就是先输入两个字符串,然后把这两个字符串转换成long long型,然后进行取模运算,最后再转成字符串输出,虽然不知道这么写出来的结果对不对,但是能AC....
AC代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#define ll long long
using namespace std;
ll a,c,b;
string str1,str2,str3;
int main()
{
cin>>str1>>str2;
int len1 = str1.length();
int len2 = str2.length();
a = b = 0;
for(int i=0;i<len1;i++){
if(str1[i] == '.')continue;
a = a * 10 + (str1[i] - '0');
}
for(int i=0;i<len2;i++){
if(str2[i] == '.')continue;
b = b * 10 + (str2[i] - '0');
}
// cout<<a<<' '<<b<<endl;
c = a % b;
if(c == 0){
printf("0.000000000\n");
}
else{
for(int i=0;i<9;i++){
str3 += (c % 10) + '0';
c /= 10;
}
str3 += '.';
while(c){
str3 += (c % 10) + '0';
c /= 10;
}
int len = str3.length();
for(int i=len-1;i>=0;i--){
printf("%c",str3[i]);
}
printf("\n");
}
return 0;
}
JAVA代码:
import java.io.*;
import java.util.*;
import java.math.*;
public class Main {
public static void main(String [] args) {
Scanner cin = new Scanner(System.in);
BigDecimal a = cin.nextBigDecimal();
BigDecimal b = cin.nextBigDecimal();
BigDecimal c = a.remainder(b);
System.out.println(c);
}
}