2013
12-09

# Floppies

In this age of Internet, on-line connections, instantaneous email, etc., there are still some people who need to work with floppy disks. John is one of those. Every evening he goes home and continues what he has been doing in his office on his private UNIX system. He copies all the files he needs to floppy disks according to the following procedure:
1. Put all files in one big SHAR file.
2. Compress the file.
3. Uuencode it, such that it is split in nice lines of 62 characters each (including the new-line).
4. Split it in files of 30,000 lines each (about 1.86Mb).
5. Compress each of the files and put it on a floppy by itself.So far, this procedure always worked, since 1.86Mb of uuencoded text, after compression, will nicely fit on a 1.44Mb floppy disk.Now, given that through compression the size of the SHAR file halves and that uuencoding a compressed file adds 50% to its size (each rounded to the nearest integer number of bytes), we would like to know for a given size of the SHAR file how many floppies John needs.

The input contains several test cases. Each test case consists of a single line containing one integer s (0 <= s <= 1,000,000,000), specifying the size of the SHAR file in bytes.The file ends with a file having s = 0. Do not generate output for this file.

For each test case, first output the number of the test case (‘File #1′, ‘File #2′, etc.), followed by a line that contains the minimal number of floppies needed for the transfer and a blank line. Adhere to the format shown below in the sample output.

1000000
10000000
100000000
0

File #1
John needs 1 floppies.

File #2
John needs 5 floppies.

File #3
John needs 41 floppies.

given that through compression the size of the SHAR file halves and that uuencoding a compressed file adds 50% to its size

#include <stdio.h>
int main()
{
double in;
int out,count = 1;
while(scanf("%lf",&in)!=EOF,in!=0)
{
in *= 0.75; // 相当于in = in / 2 * 1.5
in /= (1.86*1000000);
out = (int)in;
if(in - out != 0)
{
out++;
}
printf("File #%d\nJohn needs %d floppies.\n\n",count++,out);
}
return 0;
}

1. 为什么for循环找到的i一定是素数叻，而且约数定理说的是n=p1^a1*p2^a2*p3^a3*…*pk^ak，而你每次取余都用的是原来的m，也就是n