📜  N位数字是回文的概率

📅  最后修改于: 2021-04-26 05:38:13             🧑  作者: Mango

给定一个整数N ,任务是要找到一个数字,一个数字为N的回文率。
该数字可能带有前导零。

例子:

解决方案:

  • 由于允许前导零,所以N位数字的总数为10 N。
  • 当前N / 2个数字与后N / 2个数字以相反的顺序匹配时,数字就是回文。
  • 对于偶数个数字,我们可以选择第一个N / 2个数字,然后复制它们以形成其余的N / 2个数字,因此我们可以选择(N)/ 2个数字。
  • 对于奇数个数字,我们可以选择第一个(N-1)/ 2个数字,然后复制它们以形成其余(N-1)/ 2个数字,因此我们可以选择(N + 1)/ 2个数字。
  • 因此,一个N位数为回文数的概率为10 ceil(N / 2) / 10 N或1/10 floor(N / 2)

下面是该方法的实现:

C++
// C++ code of above approach
#include 
using namespace std;
  
// Find the probability that a
// n digit number is palindrome
void solve(int n)
{
    int n_2 = n / 2;
  
    // Denominator
    string den;
    den = "1";
  
    // Assign 10^(floor(n/2)) to
    // denominator
    while (n_2--)
        den += '0';
  
    // Display the answer
    cout << 1 << "/" << den << "\n";
}
  
// Driver code
int main()
{
  
    int N = 5;
  
    solve(N);
  
    return 0;
}


Java
// Java code of above approach
import java.util.*;
  
class GFG 
{
  
// Find the probability that a
// n digit number is palindrome
static void solve(int n)
{
    int n_2 = n / 2;
  
    // Denominator
    String den;
    den = "1";
  
    // Assign 10^(floor(n/2)) to
    // denominator
    while (n_2-- > 0)
        den += '0';
  
    // Display the answer
    System.out.println(1 + "/" + den);
}
  
// Driver code
public static void main(String[] args) 
{
    int N = 5;
  
    solve(N);
}
} 
  
// This code is contributed by Rajput-Ji


Python3
# Python3 code of above approach 
  
# Find the probability that a 
# n digit number is palindrome 
def solve(n) : 
  
    n_2 = n // 2; 
  
    # Denominator 
    den = "1"; 
  
    # Assign 10^(floor(n/2)) to 
    # denominator 
    while (n_2) : 
        den += '0'; 
          
        n_2 -= 1
          
    # Display the answer
    print(str(1) + "/" + str(den))
      
# Driver code 
if __name__ == "__main__" : 
  
    N = 5; 
  
    solve(N); 
  
# This code is contributed by AnkitRai01


C#
// C# implementation of the approach
using System;
  
class GFG 
{
  
// Find the probability that a
// n digit number is palindrome
static void solve(int n)
{
    int n_2 = n / 2;
  
    // Denominator
    String den;
    den = "1";
  
    // Assign 10^(floor(n/2)) to
    // denominator
    while (n_2-- > 0)
        den += '0';
  
    // Display the answer
    Console.WriteLine(1 + "/" + den);
}
  
// Driver code
public static void Main(String[] args) 
{
    int N = 5;
  
    solve(N);
}
} 
  
// This code is contributed by PrinciRaj1992


输出:
1/100