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


    恶臭数字论证器

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

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

    原理

      众所周知,一个数字 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(喜。

  • 相关阅读:
    windows下一键安装JDK1.8
    艾美捷藻红蛋白RPE背景及参数说明书
    【Java进阶篇】第一章 面向对象
    赠送天翼云电脑,解决一点园子的商业化烦恼
    cpacr_el1等特殊寄存器
    小咪买东西--二分
    【Voyage】GDOI 2023 旅游记 || ECHO.
    微服务系统设计——商场停车需求分析
    Kafka(三)生产者发送消息
    C语言-动态内存分配
  • 原文地址:https://blog.csdn.net/ID246783/article/details/126735479