• 恶臭数字论证器 -- 简化版


    恶臭数字论证器

      如果不知道恶臭数字论证器是什么的,具体情况可以参考这个网站:恶臭数字论证器

      现在我们要做的就是手写一个跟这个差不多的恶臭数字论证器。

    原理

      众所周知,一个数字 x x x 可以拆成每一个数位上的数字 x 0 , x 2 , x 3 , ⋯   , x n x0, x2, x3, \cdots, x_n x0,x2,x3,,xn,具体举个例子,就是 123 123 123 可以拆成 1 , 2 , 3 1, 2, 3 1,2,3。并且我们可以很轻松的用 { x i } \{x_i\} {xi} 这个数列表示出 x x x 这个数,也就是:

    x = ∑ i = 0 n x i 1 0 i x = \sum_{i = 0}^n x_i10^i x=i=0nxi10i

      这里观察一下,我们发现一下性质,也就是 x i ≤ 9 x_i \leq 9 xi9,非常的显然,所以如果我们把 1 ∼ 9 1 \sim 9 19 的数字全部都用 114514 114514 114514 表示出来的话,那么任意数字小于 1 e 10 1e10 1e10 的数字就可以恶臭的论证了。

    代码

    #include
    using namespace std;
    #define in read()
    
    inline int read(){
    	int x = 0; char c = getchar();
    	while(c < '0' or c > '9') c = getchar();
    	while('0' <= c and c <= '9')
    		x = x * 10 + c - '0', c = getchar();
    	return x;
    }
    
    int num = 0;
    map<int, string> m;
    
    int main(){
    	m[0] = "(1 - 1) * 4514";
    	m[1] = "11 / (45 - 1) * 4";
    	m[2] = "-11 + 4 - 5 + 14";
    	m[3] = "11 * (-4) + 51 - 4";
    	m[4] = "-11 - 4 + 5 + 14";
    	m[5] = "11 - 4 * 5 + 14";
    	m[6] = "1 - 14 + 5 + 14";
    	m[7] = "11 - 4 + 5 - 1 - 4";
    	m[8] = "11 - 4 + 5 / 1 - 4";
    	m[9] = "11 - 4 + 5 + 1 - 4";
    	m[10] = "-11 / 4 + 51 / 4";
    	while(1){
    		num = in;
    		if(num <= 10) { cout << m[num] << '\n'; continue; }
    		int d = num % 10; num /= 10;
    		string ans = m[d];
    		int k = 0;
    		while(num){
    			k++;
    			d = num % 10; num /= 10;
    			if(d == 0) continue;
    			ans += " + ((" + m[d] + ")" + " * " + "(" + m[10] + ")" + " ^ " + "(" + m[k] + ")" + ")";
    		}
    		cout << ans << '\n';
    	}
    	return 0;
    } 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    后记

      这个玩意儿功能还不是很齐全,比如不能表示小数,不能表示比 1 e 10 1e10 1e10 更大的数之类的,所以才叫简化版嘛,看这玩意儿也就图一乐。

      最后,114514(喜。

  • 相关阅读:
    使用Proxyman抓取Android的https请求
    JDBC、ORM、JPA与Spring Data JPA
    网络安全(黑客)自学
    Pr:多机位编辑
    了解JVM的相关概述,发现很多全忘了(文末福利)
    恢复二叉树思路及代码
    Android AOP二三事:使用AspectJ增加登录校验
    什么是 DNS 隧道以及如何检测和防止攻击
    算法D33 | 贪心算法3 | 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
    IO系列第二章——NIO (Buffer&&Channel)
  • 原文地址:https://blog.csdn.net/ID246783/article/details/126735479