1101 B是A的多少倍 (15 分)

简介: 设一个数 A 的最低 D 位形成的数是 ad​。如果把 ad​ 截下来移到 A 的最高位前面,就形成了一个新的数 B。B 是 A 的多少倍?例如将 12345 的最低 2 位 45 截下来放到 123 的前面,就得到 45123,它约是 12345 的 3.66 倍。

设一个数 A 的最低 D 位形成的数是 ad。如果把 ad 截下来移到 A 的最高位前面,就形成了一个新的数 B。B 是 A 的多少倍?例如将 12345 的最低 2 位 45 截下来放到 123 的前面,就得到 45123,它约是 12345 的 3.66 倍。

输入格式:

输入在一行中给出一个正整数 A(≤109)和要截取的位数 D。题目保证 D 不超过 A 的总位数。

输出格式:

计算 B 是 A 的多少倍,输出小数点后 2 位。

输入样例 1:

12345 2

输出样例 1:

3.66

样例-2:">输入样例 2:

12345 5

输出样例 2:

1.00

题目分析:

1.要让数字按题目要求移动

2.除法

代码如下:


C语言:


#include <stdio.h>
int main() {
  int a, n;
  scanf("%d%d", &a, &n);
  int temp = a;
  int s[10], i = 0;
  while (a) {
    s[i++] = a % 10;
    a /= 10;
  }
  for (int j = 0, t = i - 1; j < i / 2; j++, t--) {
    int y = s[j];
    s[j] = s[t];
    s[t] = y;
  }
  for (int j = 0; j < n; j++) {
    for (int t = i - 1; t > 0; t--) {
      int x = s[t];
      s[t] = s[t - 1];
      s[t - 1] = x;
    }
  }
  for (int j = 0; j < i; j++) {
    a = a * 10 + s[j];
  }
  float h = (a * 1.0) / (temp * 1.0);
  printf("%.2f", h);
}


C++:


#include <iostream>
using namespace std;
int main() {
  int a, n;
  cin >> a >> n;
  int temp = a, s[10], i = 0;
  while (a) {
    s[i++] = a % 10;
    a /= 10;
  }
  for (int j = 0, t = i - 1; j < i / 2; j++, t--) {
    int y = s[j];
    s[j] = s[t];
    s[t] = y;
  }
  for (int j = 0; j < n; j++) {
    for (int t = i - 1; t > 0; t--) {
      int x = s[t];
      s[t] = s[t - 1];
      s[t - 1] = x;
    }
  }
  for (int j = 0; j < i; j++) {
    a = a * 10 + s[j];
  }
  float h = (a * 1.0) / (temp * 1.0);
  printf("%.2f", h);
}
相关文章
L1-044 稳赢 (15 分)
L1-044 稳赢 (15 分)
160 0
L1-044 稳赢 (15 分)
h0123. 素数判断 (20 分)
h0123. 素数判断 (20 分)
314 0
L1-055 谁是赢家 (10 分)
L1-055 谁是赢家 (10 分)
118 0
L1-030 一帮一 (15 分)
L1-030 一帮一 (15 分)
136 0
L1-047 装睡 (10 分)
L1-047 装睡 (10 分)
129 0
L1-018 大笨钟 (10 分)
L1-018 大笨钟 (10 分)
108 0
L1-031 到底是不是太胖了 (10 分)
L1-031 到底是不是太胖了 (10 分)
173 0
L1-029 是不是太胖了 (5 分)
L1-029 是不是太胖了 (5 分)
110 0
L1-014 简单题 (5 分)
L1-014 简单题 (5 分)
85 0
L1-010 比较大小 (10 分)
L1-010 比较大小 (10 分)
90 0