数列1
问题描述
思维的严密性是相当重要的,尤其是在程序设计中,一个小小的错误,就可能导致无法想象的后果。明明的爸爸是一名富有经验的程序设计专家,深知思维严密的重要性。于是在明明很小的时候,就通过游戏的方式训练明明的思维严密性。今天,明明的爸爸和明明做了一个数列的游戏。
这个游戏很简单,就是有一数列,现在需要在数列中选出一个或者连续若干个数,要求这些数的和能被11整除。明明的爸爸想锻炼明明思维的严密性,因此要求明明尽可能多的找出符合条件的数列来,最好一个也不要漏掉。 例如有一数列为“11 22 33”,其中11可以被11整除,22可以被11整除,33可以被11整除,11+22=33能被11整除,22+33=55能被11整除,11+22+33=66能被11整除。所以以上一数列能被11整除的情况一共有六种。(注:虽然11+33也能被11整除,但是11和33在数列中没有连续出现,因此不算一种合理的情况。) 明明对这个游戏很感兴趣,高兴地玩了起来。由于粗心,明明总是无法一次就把所有的情况都找出来,这使得他爸爸不是很满意。于是明明爸爸决定先降低游戏的难度,事先告诉明明某一数列总共有多少种符合条件的选择数的方法,然后再让明明去选。明明的爸爸请你帮一个忙,他不想自己找出所有的情况,因此请你写一个程序,用程序来找出一共有多少种符合选数的情况,并把结果告诉他。 明明爸爸的问题可以归结为:给你一个数列,从中选出1个或连续若干个数,要求这些数的和能被11整除,问这样的选数方法一共有多少种。
个人总结
1. 用数组记录存入的数值,start记录初始下标,len记录每次遍历所取连续的长度(len不超过size)
2. 与前面的遍历不同,此处不能够循环,若start + len超过size,则需要break
3. 每次sum符合条件都count++
#include <iostream>
#include <vector>
//#include <string>
//#include <cmath>
//#include <algorithm>
//#include <sstream>
using namespace std;
int count_num(int num[],int size){
int start;
int count = 0;
int len;
int sum;
for(start = 0 ;start < size ;start++ ){
for(len = 0 ;len < size ;len++ ){
if(start + len >= size){
break;
}
sum = 0;
int i = start;
do{
sum += num[i];
}while(i++ < start+len);
// for(int i = start; i < start+len; i++){
// sum += num[i];
// }
if(sum % 11 == 0){
count ++;
}
}
}
return count;
}
int main() {
int n;
while(cin >> n){
vector<int> num;
while(n--){
int x;
cin >> x;
num.push_back(x);
}
cout << count_num(num.data() ,num.size() ) << endl;
}
return 0;
}
部落人乘法
问题描述
明明热爱数学,他的爸爸也有意培养明明对数学的兴趣。
一次,为了拓展明明的知识面,爸爸给明明讲了一个原始部落人计算乘法的方法:
据说原始部落人以小石子作为计算工具,并用减半和加倍两种运算就能求得任何两个整数的乘积。
其规则是:
左边不断除2,写下商,舍去余数;
右边不断加倍,直到左边变成1为止。
取结果的方法是:
如果某行左边是偶数,就划去整个这一行;
如果某行左边是奇数,右边剩下的数相加即可。
例如求13与15的乘积的过程是:
计算过程:
13--------15 :13除以2等于6,舍去余数1,15乘以2等于30;
6---------30 :6除以2等于3,30乘以2等于60;
3---------60 :3除以2等于1,舍去余数1,60乘以2等于120;
1---------120 :左边数字为1,停止计算。
取结果过程:
13--------15 :左边是奇数,取15;
6---------30 :左边是偶数,划去;
3---------60 :取60;
1---------120 :取120;
其结果就是: 13*15=15+60+120=195。
明明对爸爸讲的这个故事相当感兴趣,也自己动手开始模拟上面的过程计算起来。刚开始的时候,明明感觉这样计算很有趣,但是时间一长,明明就觉得这样的计算过程很麻烦。他想让你帮他写一个程序,快速的计算出上述乘法最后相加的式子和结果。
明明的问题可以归结为:给你两个整数,使用上面描述的乘法过程,输出最后的相加的式子。
个人总结
1. 用两个数组left,right记录数值,若left与right同下标,则表示同一列数字,直到left为1,根据条件对right数组处理
#include <iostream>
#include <vector>
//#include <set>
//#include <string>
//#include <cmath>
#include <algorithm>
//#include <sstream>
//#include <bits/stdc++.h>
using namespace std;
int main() {
int a,b;
while(cin >> a >> b){
vector<int> left;
vector<int> right;
int l,r;
l = a;
r = b;
while(l >= 1){
left.push_back(l);
right.push_back(r);
l /= 2;
r *= 2;
}
cout << a << "*" << b << "=";
int sum = 0;
for(int i = 0;i < left.size(); i++){
if(left[i] % 2 == 0){
continue;
}
else{
sum += right[i];
if(left[i] != 1){
cout << right[i] << "+";
}else{
cout << right[i] << "=";
}
}
}
cout << sum << endl;
}
}
按要求输出序列
问题描述
明明的爸爸是一位著名的数学家。他在明明很小的时候就发现明明有过人的数学天赋,因此有意培养他对数学的兴趣。一次,明明的爸爸为了培养明明对数字的敏感,和明明玩起了一个数字游戏,这个游戏的名称叫“按要求输出序列”。在游戏中,明明的爸爸给了明明一串数字,要求明明首先把这串数字中重复出现的数字删除到仅剩一个,即相同的数字只保留一个,然后将这串数字从小到大进行排序。明明很快就理解了游戏的规则,开始玩起来。明明的爸爸首先给了明明三个数字:3、2、1;明明很快就回答说:“1、2、3”。明明的爸爸惊讶于明明的反应能力,开始加大游戏的难度,给出了由6个数字组成的数字串:2、1、4、3、5、2;明明眼珠子一转,脱口而出:“1、2、3、4、5”(由于“2”出现了两次,因此要删除一个,然后再排序输出。)。明明的爸爸意识到简单的数字串难不住明明,于是决定给出很长的一串数字串来考明明。但与此同时,明明爸爸面对这很长的数字串也无法一时计算出最后的结果,于是就求助于你,让你帮他写一个程序,用来计算出数字串最后的结果。
明明的爸爸的问题可以归结为:给你一个数字串,里面有n个数字,首先对数字串中的数字进行处理,删除重复出现的数字(重复出现的数字只保留一个),然后对数字串从小到大进行排序,最后输出排序后的字符串。
个人总结
※使用set库:set作为容器,可以自动排序并去除重复项 (查看笔记回顾set容器的定义以及用法),但是set容器不可以随机访问,需要用到迭代器访问(了解是否还有其他的访问方式)
1. 使用vector定义数组,循环插入数值,每插入一个值就判断是否存在重复值,若有直接break进入下一循环,若无,则插入该值
由于我提前初始化了该数组中的值为-1,所以数组中会存在很多-1,我懒得改就直接不遍历-1输出除-1以外其他值,这里其实可以优化
#include <iostream>
#include <vector>
//#include <string>
//#include <cmath>
#include <algorithm>
//#include <sstream>
using namespace std;
int main() {
int n;
while(cin >> n){
int x;
vector<int> num (n,-1);
while(n--){
int tag;
cin >> x;
for(int i=0;i < num.size() ;i++){
tag = 1;
if(num[i] == x){
tag = 0;
break;
}
}
if(tag){
num.push_back(x);
}
}
sort(num.begin() ,num.end() );
for(int i = 0;i < num.size() ;i++){
if(num[i] != -1){
cout << num[i];
if(i < num.size() - 1){
cout << " ";
}
}
}
cout << endl;
}
return 0;
}
计算机英语翻译
图灵测试不再被视为一个有意义的衡量人工智能的其中一个原因,就是一个对人工智能eerie的应用可以被相关的ease制造(可以比较容易地生成一种怪异的智能外表)。一个广为人知的例子出现(结果产生了一个著名的例子),当项目DOCTOR(更加通用的系统ELIZA的一个版本)的结果被Joseph Weizenbaum发展在1960年中期(20世纪60年代中叶,约瑟夫威森保姆开发了DOCTOR程序)(系称为ELIZA的系统的一个版本,ELIZA比它更通用)。这个interactive (交互)项目为一个Rogerian 分析的图片的项目而设计(这个交互程序旨在呈现一个进行心理访谈的罗杰斯式分析师的形象)
eerie adj.怪异的,神秘的
ease n.容易,不费劲
interactive adj.交互的
单词打卡

、部落人乘法(中)、按要求输出序列(中)&spm=1001.2101.3001.5002&articleId=157700910&d=1&t=3&u=2b2e9cee7a814383818c1487be648957)
584

被折叠的 条评论
为什么被折叠?



