second
parent
dc6b745dd6
commit
9922fad481
@ -0,0 +1,83 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#define SIZE 1000000
|
||||
|
||||
int euclid(int a, int b);
|
||||
|
||||
int main() {
|
||||
float f;
|
||||
char p = 0;
|
||||
static char s[SIZE] = "";
|
||||
static char x[SIZE] = "", y[SIZE] = "", z[SIZE] = "";
|
||||
int i, j;
|
||||
int xi = 0, yi = 0, zi = 0, gcd = 1;
|
||||
scanf("%f", &f);
|
||||
sprintf(s, "%.6f", f);
|
||||
|
||||
for (i = 0; (i < (int)strlen(s)) && (s[i] != '.'); ++i);
|
||||
|
||||
for (j = 0; j < i; ++j)
|
||||
x[j] = s[j];
|
||||
|
||||
for (j = 0; j < (int)strlen(s); ++j) {
|
||||
y[j] = s[i+1+j];
|
||||
if ((y[j] != '0') && (y[j] != '\0'))
|
||||
p = 1;
|
||||
}
|
||||
|
||||
if (p)
|
||||
for (j = 0; j < (int)strlen(s) - i; ++j)
|
||||
z[j] = '0';
|
||||
else {
|
||||
z[0] = '1';
|
||||
z[1] = '\0';
|
||||
}
|
||||
|
||||
if (j) {
|
||||
z[0] = '1';
|
||||
z[j] = '\0';
|
||||
}
|
||||
else {
|
||||
y[0] = '0';
|
||||
y[1] = '\0';
|
||||
z[0] = '1';
|
||||
z[1] = '\0';
|
||||
}
|
||||
|
||||
xi = atoi(x);
|
||||
yi = atoi(y);
|
||||
zi = atoi(z);
|
||||
if (zi != 0)
|
||||
gcd = euclid(zi, yi);
|
||||
|
||||
if (gcd) {
|
||||
zi = (int) zi / gcd;
|
||||
yi = (int) yi / gcd;
|
||||
}
|
||||
if (zi == 0)
|
||||
zi = 1;
|
||||
printf("%d (%d/%d)", xi, yi ,zi);
|
||||
}
|
||||
|
||||
int euclid(int a, int b) {
|
||||
if ((a == 0) || (b == 0))
|
||||
return 0;
|
||||
int x = 1;
|
||||
if (a < b) {
|
||||
int c = a;
|
||||
a = b;
|
||||
b = c;
|
||||
}
|
||||
|
||||
while (x != 0) {
|
||||
x = a % b;
|
||||
a = x;
|
||||
if (a < b) {
|
||||
int c = a;
|
||||
a = b;
|
||||
b = c;
|
||||
}
|
||||
}
|
||||
return a;
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
union data convert(union data x) {
|
||||
int i;
|
||||
for (i = 0; i < 4; ++i) {
|
||||
uint8_t z = x.arr[i];
|
||||
x.arr[i] = x.arr[7-i];
|
||||
x.arr[7-i] = z;
|
||||
}
|
||||
return x;
|
||||
}
|
||||
|
@ -0,0 +1,16 @@
|
||||
#ifdef _DEBUG
|
||||
#include <stdio.h>
|
||||
unsigned int patch(unsigned int x);
|
||||
|
||||
int main() {
|
||||
unsigned int x = 1000 * 100;
|
||||
unsigned int y = 2310 * 100 + 72;
|
||||
unsigned int z = patch(y);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
unsigned int patch(unsigned int x) {
|
||||
return x & ~(1 << 17);
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
#include <stdio.h>
|
||||
|
||||
union u {
|
||||
double d;
|
||||
float f;
|
||||
unsigned u;
|
||||
unsigned long long l;
|
||||
} uu;
|
||||
|
||||
int main() {
|
||||
char s[10] = "";
|
||||
scanf("%s", s);
|
||||
if (s[0] == 'f') {
|
||||
float a;
|
||||
scanf("%f", &a);
|
||||
uu.f = a;
|
||||
int t = 0;
|
||||
for (int i = sizeof(float) * 8 - 1; i >= 0; i--) {
|
||||
printf("%d", (uu.u >> i) & 1);
|
||||
t += 1;
|
||||
if (t==4) {
|
||||
t=0;
|
||||
putchar(' ');
|
||||
}
|
||||
}
|
||||
} else if (s[0] == 'd') {
|
||||
double a;
|
||||
scanf("%lf", &a);
|
||||
uu.d = a;
|
||||
int t = 0;
|
||||
for (int i = sizeof(double) * 8 - 1; i >= 0; i--) {
|
||||
printf("%lld", (uu.l >> i) & 1);
|
||||
t += 1;
|
||||
if (t==4) {
|
||||
t=0;
|
||||
putchar(' ');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
printf("0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1011 1111 1111 1111 1000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000");
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#define SIZE 10000000
|
||||
|
||||
int f(const void *a, const void *b);
|
||||
|
||||
int main() {
|
||||
static long double nums[SIZE];
|
||||
int len, i;
|
||||
long double x;
|
||||
long double sum = 0;
|
||||
|
||||
for (len = 0; scanf("%Lf", &x) != EOF; ++len) {
|
||||
nums[len] = x;
|
||||
}
|
||||
qsort(nums, len, sizeof(long double), f);
|
||||
|
||||
#ifdef _DEBUG
|
||||
for (int z = 0; z < len; ++z)
|
||||
printf("%.20Lf ", nums[z]);
|
||||
putchar('\n');
|
||||
printf("len:%d\n", len);
|
||||
#endif
|
||||
for (i = 0; i < len; ++i)
|
||||
sum += nums[i];
|
||||
printf("%.20Lf", sum);
|
||||
|
||||
}
|
||||
|
||||
int f(const void *a, const void *b) {
|
||||
#ifdef _DEBUG
|
||||
printf("a = %f, b = %f\n", *(float *)a, *(float *)b);
|
||||
#endif
|
||||
if (*(const long double *)a > *(const long double *)b)
|
||||
return 1;
|
||||
return -1;
|
||||
}
|
@ -0,0 +1,70 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#define SIZE 12500000
|
||||
|
||||
int check_bit(char x, int pos);
|
||||
int count_bits(char x, int max_offset);
|
||||
|
||||
int main() {
|
||||
char *robots = (char*)calloc(SIZE, sizeof(char));
|
||||
int v, N, i, j, x, s, byte_n, byte, offset;
|
||||
int res = 0;
|
||||
|
||||
scanf("%d %d", &v, &N);
|
||||
if ((N + 1) % 8) {
|
||||
byte_n = (int)((N + 1) / 8) + 1;
|
||||
}
|
||||
else {
|
||||
byte_n = (int)((N + 1) / 8);
|
||||
}
|
||||
|
||||
#ifdef _DEBUG
|
||||
printf("byte_n:%d, N;%d\n", byte_n, N);
|
||||
#endif
|
||||
for (i = 0; i < v; ++i) {
|
||||
scanf("%d", &x);
|
||||
byte = (int)(x / 8);
|
||||
offset = x % 8;
|
||||
#ifdef _DEBUG
|
||||
printf("Setting first robot at byte %d[%d]\n!=!=!\n", byte, offset);
|
||||
#endif
|
||||
robots[byte] = robots[byte] | (128 >> offset);
|
||||
for (j = 1, s = 0; x * (j + 1) + s <= N; s += j, ++j) {
|
||||
#ifdef _DEBUG
|
||||
printf("x*%d+%d = %d\n", j+1, s, x * (j+1) + s);
|
||||
#endif
|
||||
byte = (int)((x * (j + 1) + s) / 8);
|
||||
offset = (x * (j + 1) + s) % 8;
|
||||
#ifdef _DEBUG
|
||||
printf("Setting byte %d[%d]\n", byte, offset);
|
||||
#endif
|
||||
robots[byte] = robots[byte] | (128 >> offset);
|
||||
}
|
||||
}
|
||||
for (i = 0; i < byte_n - 1; ++i) {
|
||||
#ifdef _DEBUG
|
||||
printf("Counting bits at byte %d, found %d bits\n", i, count_bits(robots[i], 7));
|
||||
#endif
|
||||
res += count_bits(robots[i], 7);
|
||||
}
|
||||
|
||||
offset = (N - 1) % 8;
|
||||
|
||||
#ifdef _DEBUG
|
||||
printf("Counting bits at byte %d, found %d bits[final offset: %d]\n", i, count_bits(robots[i], offset), offset);
|
||||
#endif
|
||||
res += count_bits(robots[i], offset);
|
||||
printf("%d", res);
|
||||
}
|
||||
|
||||
int check_bit(char x, int pos) {
|
||||
return (x >> (7 - pos)) & 1;
|
||||
}
|
||||
|
||||
int count_bits(char x, int max_offset) {
|
||||
int res = 0;
|
||||
for (int i = 0; i <= max_offset; ++i) {
|
||||
res += check_bit(x, i);
|
||||
}
|
||||
return res;
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
typedef struct{
|
||||
char *dig;
|
||||
int n;
|
||||
char sign;
|
||||
} LongN;
|
||||
|
||||
LongN getLongN(char * s);
|
||||
void printLong(LongN x);
|
||||
int main() {
|
||||
LongN a;
|
||||
a.dig = (char*)calloc(101, sizeof(char));
|
||||
a.dig[0] = 12;
|
||||
a.dig[1] = 34;
|
||||
a.dig[2] = 5;
|
||||
a.n = 5;
|
||||
a.sign = 1;
|
||||
//printLong(a);
|
||||
char s[50]; //= "-1234";
|
||||
scanf("%s", s);
|
||||
LongN x = getLongN(s);
|
||||
printLong(x);
|
||||
free(a.dig);
|
||||
free(x.dig);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void printLong(LongN x) {
|
||||
if (x.sign) {
|
||||
printf("-");
|
||||
}
|
||||
if (x.n % 2) {
|
||||
x.n++;
|
||||
}
|
||||
for (int i = 0; i < (int)(x.n/2); ++i) {
|
||||
printf("%d", x.dig[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
LongN getLongN(char* s) {
|
||||
int k = 0;
|
||||
LongN r;
|
||||
|
||||
r.sign = 0;
|
||||
if (s[0] == '-') {
|
||||
k = 1;
|
||||
r.sign = 1;
|
||||
}
|
||||
if (s[0] == '+')
|
||||
k = 1;
|
||||
|
||||
int l = k;
|
||||
|
||||
for (; s[l] >= '0' && s[l] <= '9'; ++l);
|
||||
r.n = (l - k - 1) / 2 + 1;
|
||||
r.dig = (char*)calloc(101, sizeof(char));
|
||||
|
||||
int t = 0;
|
||||
for (int i = l - 1; i >= k; i -= 2, t++) {
|
||||
if (i == k) {
|
||||
r.dig[t] = s[i] - '0';
|
||||
}
|
||||
else
|
||||
r.dig[t] = 10 * (s[i - 1] - '0') + s[i] - '0';
|
||||
}
|
||||
return r;
|
||||
}
|
Reference in New Issue