(1)因为初始数组开的太小,导致当要存的数过多时覆盖掉了其他内容导致莫名其妙的错误(比如数组a加一个元素导致a中实际没有加而在b中覆盖掉了一个元素)。
(2)格式问题。因为题目没有说清楚,试了多次才ac。以后看输出示例要注意这一点。
(3)关于整除时的处理。因为考虑到分子为零的示例导致整除时的输出多了一个0(比如20/4 = 5.0(0))。
#include
#include
//#include
//using namespace std;
int n, d;//fraction: n/d
int decimals[3333];//log .xyz...
int log[3333];
int main() {
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
while(1 == scanf("%d", &n)) {
scanf("%d", &d);
//if((count - 1)) printf("\n");//attention...!
printf("%d/%d = %d.", n, d, n/d);
n %= d;
decimals[1] = 10 * n / d;
log[1] = n;//log[i] decides decimals[i]
if(!n) {
printf("(0)\n 1 = number of digits in repeating cycle\n");
printf("\n");//attention
continue;
}
n = 10 * n % d;
int count = 2;//denote n is the count'th n...
//attention: (1)整除(2)超长
while(n) {
// if(count == 65)
// printf("arrive");
decimals[count] = 10 * n / d;
log[count] = n;
//cout <<"count("<