1031. square root
#include<stdio.h>
#include<math.h>
// 求x*2-n=0的艮
double fun(double a, double n)
{
return a * a - n;
}
//对a求导
double part_func(double a)
{
return 2 * a;
}
int main()
{
double input, output;
scanf("%lf", &input);
if(input == 0)
{
printf("%.6f", 0.0);
return 0;
}
output = input - fun(input, input) / part_func(input);
while(fabs(output - sqrt(input)) > 1e-8)
{
output = output - fun(output, input) / part_func(output);
}
printf("%.6lf", output);
return 0;
}
1032 素数判断
#include<stdio.h>
#include<math.h>
int main()
{
int a;
scanf("%d", &a);
if(a == 2)
{
printf("Yes");
return 0;
}
else if(a == 1)
{
printf("No");
return 0;
}
int temp = sqrt(a) + 1;
for(int i = 2; i <= temp; i++)
{
if(!(a % i))
{
printf("No");
return 0;
}
}
printf("Yes");
return 0;
}
1033. 等差数列
输入 n 个整数,判断它们是否构成一个等差数列。
#include<stdio.h>
int main()
{
int diff, a, b;//
scanf("%d%d", &a, &b);
diff = b - a;
a = b;
while(scanf("%d", &b) != EOF)
{
if(diff != b - a)
{
printf("No");
return 0;
}
a = b;
}
printf("Yes");
return 0;
}
1034. 统计1的个数
输入一个非负 int 类型整数,在一行中输出该整数的二进制表示中值为 1 的位数。
#include<stdio.h>
int main()
{
unsigned int in;
scanf("%u", &in);
int cnt = 0;
while(in)
{
if(in % 2)
cnt++;
in >>= 1;
}
printf("%d", cnt);
return 0;
}
1035. 二分查找
#include<stdio.h>
#include<stdlib.h>
int n;
long long bi_search_r(int l, int r, long long data, long long* arr)
{
if(arr[r] == arr[l])//注意开头为0不需要输出
{
if(arr[l] == data)
return n - 1;
else return 0xffff;
}
while(l <= r)
{
int mid = (l + r) / 2;
if(arr[mid] > data)
{
r = mid - 1;
}
else if(arr[mid] < data || (arr[mid] == data && arr[mid + 1] == data) )
{
l = mid + 1;
}
else if(arr[mid] == data && mid == n - 1)//注意边界
return mid;
else if(arr[mid] == data && arr[mid + 1] > data)
return mid;
}
return 0xffff;
}
long long bi_search_l(int l, int r, long long data, long long* arr)
{
if(arr[r] == arr[l])
{
if(arr[r] == data)
return 0;
else return 0xffff;
}
while(l <= r && l >= 0 && r < n)
{
int mid = (l + r) / 2;
if(arr[mid] > data || (arr[mid] == data && arr[mid - 1] == data))
{
r = mid - 1;
}
else if(arr[mid] < data )
{
l = mid + 1;
}
else if(arr[mid] == data && mid == 0)
return mid;
else if(arr[mid] == data && arr[mid - 1] < data)
return mid;
}
return 0xffff;
}
int main()
{
long long fl = 0xffff, fr = 0xffff, data;
scanf("%lld", &n);
long long *arr = (long long*)malloc(sizeof(long long) * n);
for(int i = 0; i < n; i++)
scanf("%lld", arr + i);
scanf("%lld", &data);
fl = bi_search_l(0, n - 1, data, arr);
fr = bi_search_r(0, n - 1, data, arr);
if(fl == 0xffff)
printf("%X%04X", fl, fr);//
else if(fl == 0 && fr == n - 1)
printf("%X", fr);
else
printf("%X%04X", fl, fr);
}