问题 A: 十进制整数转二进制
时间限制 : 1 Sec 内存限制 : 2 MB
提交 : 932 解决 : 399
[ 提交 ][ 状态 ][ 讨论版 ]
题目描述
给出一个十进制的非负整数 x ,x<=216,把它转换成二进制数输出。
输入
输入为多行,每行一个整数 x ,至读入 EOF结束。
输出
每行输出 x 对应的二进制数值。
样例输入
0
1
3
33
65535
样例输出
0
1
11
100001
111
提示
本题有多种解法: 可以用循环迭代对 2 的除法和取余操作, 不过处理的顺序与输出顺序相反,
需要利用数组存储;用取对数或从大到小减去 2 的整数次幂的方法计算与输出顺序是相同
的;也可以用 printf() 把十进制的数值处理成十六进制,然后 1 位十六进制转 4 位二进制;
也可以用位运算处理。
#include<>
int main()
{
long int a[65536],b,c,i,j;
while (scanf("%ld",&b)!=EOF)
{
if(b==0)
printf("0\n");
else
{
c=0;
for(i=b;(i/ 2!=0)||(i==1);i=i/ 2)
{
a[c]=i%2;
c=c+1;
}
for(j=c-1;j>0;j--)
printf("%ld",a[j]);
printf("%ld\n",a[0]);
}
}
}
问题 B: 求一元二次方程的根
时间限制 : 1 Sec内存限制 : 2 MB
提交 : 1050 解决 : 106
[提交][ 状态 ][讨论版 ]
题目描述
一元二次方程的标准形式为 ax2 +bx+c=0(a ≠,其中0) a、b 、c 为常数。求解一元二次方程的根
2
x 时有三种情况,分别为(记 Δ=b-4ac ):
1. Δ,有两个不等的实根;>0
2. Δ,有两个相同的实根;=0
3. Δ,有两个共轭的虚根。<0
输入
输入为多行,每行为一元二次方程的三个常数 a,b,c,在 double 类型范围之内。当输入的 a
为 0 时,表示输入结束。
输出
每行输入的样例对应三行输出。
第一行输出为样例的编号。 第二行输出为所输入常数 a,b,c 对应的一元二次方程的标准形式,
要求输出满足 a>0。第三行输出为所输入方程的根,分为三种情况: 1. 若方程满足 Δ>0,即
有两不等实根 x1 、x2,则按大小顺序输出这两个实根。 2. 若方程满足 Δ=0,即有两相同实
根 x,则输出一个实根。 3. 若方程满足 Δ<0,即有两共轭的虚根 x1 、x2 ,则输出两个虚根,
虚部符号为正的(即 u+vi 形式)先输出,虚