C++编程有趣的标题1 于1~9填写的运算结果的中间符号等于100
2024-10-19 03:30:33
于1 2 3 4 5 6 7 8 9将九个数字“+”要么“-”符号使得结果100,编程的所有组合。
注意:数字顺序不能改变
<pre name="code" class="cpp">nclude <stdio.h>
#include <iostream>
#include <memory.h> #define NUM 6561 //3^8:6561
using namespace std;
int mici(int x, int i) //求解x^i
{
int res = 1;
for (; i>0; i--)
{
res *= x;
}
return (res);
} int main(int argc, char *argv[])
{
int data[9];
int index, level;
int i, j, k=0;
int pre_sign;
int temp = 0;
int sum = 0;
int x = 2; for (i=0; i<NUM; i++) //总共同拥有6561种可能
{
memset(data, 0, sizeof(int)*9); //清零
index = i;
for (level=9; level>1; level--) //有8处符号须要推断
{
pre_sign = index%3; //该空的符号,规定0:+,1:-。2:连接
index = index/3; //往上一层(即上一个空)的位置
switch(pre_sign)
{
case 0:
if (temp == 0)
{
data[k] = level;
}
else
{
data[k] = temp;
temp = 0;
x = 2;
}
k++;
break;
case 1:
if (temp == 0)
{
data[k] = 0 - level;
}
else
{
data[k] = 0 - temp;
temp = 0;
x = 2;
}
k++;
break;
case 2:
if (temp == 0)
{
temp = level + (level-1)*10;
}
else
{
temp = temp + (level-1)*mici(10,x);
x++;
}
break;
default:
break;
}
} if (pre_sign == 2) //处理数字1
{
data[k] = temp;
}
else
{
data[k] = 1;
}
k = 0; //将这些变量复位非常重要。以免影响下一轮。
temp = 0;
x = 2; for (j=0; data[j]!=0; j++) //求和
{
sum = sum + data[j];
} if (sum == 100)
{
for (j=j-1; j>=0; j--) //逆序输出,这样1在前面
{
if (data[j] >0)
{
cout<<"+"<<data[j];
}
else
{
cout<<data[j];
}
}
cout<<" = "<<sum<</*"....."<<i<<*/endl; //i for test
}
sum = 0;
}
return(0);
}
</pre><pre name="code" class="cpp">
这是我在网上无意间看到的,认为非常有意思,自己就在电脑上试了一下,100多行源码打了半个多小时。最后也还是出现了错误。最后在一个专业的学长的帮助下攻克了问题,原来是编译器的不同导致的。 看来还得好好了解下不同编译器导致的不同问题啊。还有 凝视中尽管说有6561种可能,但不知道为什么最后仅仅出现了11种。有待加强改进啊
相信自己有朝一日可以自己写出此代码,继续加油!。。 酒吧 年青^0^
版权声明:本文博主原创文章。博客,未经同意不得转载。
最新文章
- intellij idea 12 编码不可映射字符
- C语言产生标准正态分布或高斯分布随机数
- 大叔也说Xamarin~Android篇~Activity之间传递数组
- Javascript中最常用的55个经典技巧(转)
- 记录一次冷备恢复遇到的 ORA-00304问题
- 基础学习day06---面向对象二---static,类的初始化和调用顺序、单例模式
- 给表追加主键-----报错ORA-02437: 无法验证 (DENGCHAO.TEST) - 违反主键
- laravel 开启sql查询日志
- JFrame 实现全屏透明背景
- 过滤器Filter(2)
- C++ Socket UDP ";Hello World!";
- Flash Android ANE打包之基本流程
- Webkit浏览器点击控件时出现的边框消除
- 【Python 11】汇率兑换4.0(函数)
- <;%@ taglib prefix=";c"; uri=";http://java.sun.com/jsp/jstl/core"; %>;会报错
- javascript记忆
- linux存储管理之交换分区
- Django框架----模板语法
- mybatis 一对多,(多对一,一对一
- BZOJ1833或洛谷2602 [ZJOI2010]数字计数
热门文章
- iOS:点击button卡死
- Eclipse下Android编程代码自动提示
- HashTable的数组和连接两种实现方法(Java版本号)
- 英文版Ubuntu安装Fcitx输入法
- leetcode解析回文子串拆分
- UML简单介绍
- VSTO学习笔记(一)VSTO概述
- Node.js: What is the best "full stack web framework" (with scaffolding, MVC, ORM, etc.) based on Node.js / server-side JavaScript? - Quora
- js:进一步关闭(范围:下一个)
- [置顶] hdu 4699 2个栈维护 or 伸展树