URAL 1104 Don’t Ask Woman about Her Age(数论)
2014-10-10 21:42
501 查看
题目链接
题意 : 给你一个数,未知进制,然后让你从2到36进制中找出一个最小的进制K,满足给你的这个数作为k进制时能够整除k-1。
思路 : 有一个公式,(a*b^n)mod(b-1)=a;
给定你这个数,当做字符串输入的时候,这个数转化成10进制的结果应该是:a[0]*k^(n-1)+a[1]*k^(n-2)+……+a[n-1]*k^0,然后题目要求的就是这个式子的结果取余(k-1)为0,
经过最开始给出的公式,将该式子化简得(a[0]+a[1]+……+a[n-1])%(k-1),所以只要满足这个数的每一位加起来对k-1取余为0即可。
View Code
题意 : 给你一个数,未知进制,然后让你从2到36进制中找出一个最小的进制K,满足给你的这个数作为k进制时能够整除k-1。
思路 : 有一个公式,(a*b^n)mod(b-1)=a;
给定你这个数,当做字符串输入的时候,这个数转化成10进制的结果应该是:a[0]*k^(n-1)+a[1]*k^(n-2)+……+a[n-1]*k^0,然后题目要求的就是这个式子的结果取余(k-1)为0,
经过最开始给出的公式,将该式子化简得(a[0]+a[1]+……+a[n-1])%(k-1),所以只要满足这个数的每一位加起来对k-1取余为0即可。
import java.io.BufferedInputStream; import java.util.Scanner; public class ural { public static void main(String[] args) { Scanner cin = new Scanner(new BufferedInputStream(System.in)); String s = cin.nextLine(); int sum = 0; int mink = 2; for (int i = 0; i < s.length(); i++) { sum += c2i(s.charAt(i)); if (c2i(s.charAt(i)) >= mink) mink = c2i(s.charAt(i)) + 1; } for (int k = mink; k <= 36; k++) { if (sum % (k - 1) == 0) { System.out.println(k); return; } } System.out.println("No solution."); } public static int c2i(char c) { if ('A' <= c && c <= 'Z') return (int) (c - 'A') + 10; else return (int) (c - '0'); } }
View Code
相关文章推荐
- ural 1104. Don’t Ask Woman about Her Age暴力
- ural 1104. Don’t Ask Woman about Her Age
- ural 1104. Don’t Ask Woman about Her Age
- ural 1104 Don’t Ask Woman about Her Age
- Ural 1104. Don’t Ask Woman about Her Age
- 1104. Don’t Ask Woman about Her Age(数论)
- Timus 1104. Don’t Ask Woman about Her Age
- Timus 1104 Don’t Ask Woman about Her Age
- Don’t Ask Woman about Her Age
- URAL 1104(数论)
- 命令,不要去询问(Tell, Don’t Ask)”原则
- 数论基础定理及其应用(hdu 2685 I won't tell you this is about number theory, hdu 2582 f(n),hdu 1792 A New Chan)
- URAL 1133 Fibonacci Sequence(数论)
- words about age
- URAL 1139. City Blocks (数论)
- URAL 2070 Interesting Numbers(数论)
- Interesting Numbers URAL - 2070 数论
- hdu 4910 Problem about GCD(数论)
- URAL 1355. Bald Spot Revisited(数论)
- hdu 1104 数论+bfs