CF 900B
    Time Limit:1000MS Memory Limit:262144KB 64bit
IO Format:
%I64d & %I64u

Exponentiation

2.1 输入输出进阶

Description

Time Limit: 500MS   Memory Limit: 10000K
Total Submissions: 175340   Accepted: 42341

%f:读入输出float/输出double。

现有一式子 a / b. 你需要找出数字 c 在小数点后第一次出现的位置

Description

%lf:读入double。

Input

Problems involving the computation of
exact values of very large magnitude and precision are common. For
example, the computation of the national debt is a taxing experience for
many computer systems. 

%lld:读入输出long
long。

输入包含三个整数a, b, c (1 ≤ a < b ≤ 105, 0 ≤ c ≤ 9).

This problem requires that you write a
program to compute the exact value of Rn where R is a real
number ( 0.0 < R < 99.999 ) and n is an integer such that 0 < n
<= 25.

%s:读入输出字符串,不需要加“&”。

Output

Input

%u:以无符号整数形式输出整数。

输出数字 c 第一次在小数点后出现的位置,如果 c 不在小数点后出现输出 -1

The input will consist of a set of pairs
of values for R and n. The R value will occupy columns 1 through 6, and
the n value will be in columns 8 and 9.

%x:以十六进制形式读入或输出整数。

Sample Input

Output

2.2 算术运算符和算术表达式

Input

The output will consist of one line for
each line of input giving the exact value of R^n. Leading zeros should
be suppressed in the output. Insignificant trailing zeros must not be
printed. Don’t print the decimal point if the result is an
integer.

精度:double
> long long > int > short > char

1 2 0

Sample Input

表达式的值的类型,以操作数中精度高的类型为准。

Output

95.123 12
0.4321 20
5.1234 15
6.7592  9
98.999 10
1.0100 12

2.3 关系运算符和逻辑表达式

2

Sample Output

逻辑表达式是短路计算的。

Input

548815620517731830194541.899025343415715973535967221869852721
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
43992025569.928573701266488041146654993318703707511666295476720493953024
29448126.764121021618164430206909037173276672
90429072743629540498.107596019456651774561044010001
1.126825030131969720661201

2.4 其它运算符及运算符优先级

2 3 7

Hint

单目运算符、条件运算符、赋值运算符的优先级从右至左结合。

Output

If you don’t know how to determine
wheather encounted the end of input: 
s is a string and n is an
integer 

单目运算优于双目运算,关系运算符中“!=”“==”比其他的低一个级别。

-1
C++

while(cin>>s>>n)

{

...

}

c

while(scanf("%s%d",s,&n)==2) //to  see if the scanf read in as many items as you want

/*while(scanf(%s%d",s,&n)!=EOF) //this also work    */

{

...

}

 

Hint

Source

作业

第一组样例 : 1 / 2 = 0.5000 出现在第二个位置

East Central North America
1988

1.对齐输出

第二组样例 : 2 / 3 = 0.6666 7 没有出现,输出 -1

图片 1

Description:读入三个整数,按每个整数占8个字符的宽度,右对齐输出它们。

本题主要有两个易错点,一是不要认为只寻找小数点后六位,我是开到了小数点后1000位。二是double的精度问题,因为double存储格式的问题,存储的小数是不精确的,所以避免小数的运算,转为整数的运算。

大意:

Input:只有一行,包含三个整数,整数之间以一个空格分开。

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<algorithm>#include<queue>#include<stack>#include<deque>#include<iostream>using namespace std;const int INF=0x3f3f3f3f;const int N=200;int main(){    int i,p,j;    int a,b,c,flag=0;    scanf("%d%d%d",&a,&b,&c);    for(i=0; i<=10000; i++)    {        if(a<b&&flag==0)            flag=i+1;        if(a<b)        {            a*=10;            p=a/b;            if(p==c&&flag!=0)                break;            a=a%b;        }        else        {            a=a%b;        }    }    if(i<=1000)        printf("%dn",i+2-flag);    else        printf("-1n");    return 0;}

对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。

Output:只有一行,按照格式要求依次输出三个整数,之间以一个空格分开。

现在要你解决的问题是:对一个实数R( 0.0 < R < 99.999
),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 < n <=
25。

Sample
Input:123456789 0 -1

Input

Sample
Output:123456789 0 -1

T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。

 1 #include <cstdio>
 2 
 3 int main()
 4 {
 5     int a, b, c;
 6     scanf("%d %d %d", &a, &b, &c);
 7 
 8     printf("%8d %8d %8dn", a, b, c);
 9 
10     return 0;
11 }

Output

2.输出保留12位小数的浮点数

对于每组输入,要求输出一行,该行包含精确的 R 的 n
次方。输出需要去掉前导的 0 后不要的 0
。如果输出是整数,不要输出小数点。 

Description:读入一个双精度浮点数,保留12位小数,输出这个浮点数。

图片 1

Input:只有一行,一个双精度浮点数。

发表评论

电子邮件地址不会被公开。 必填项已用*标注