题目:
某天、小晨在路上背着单词,突遇一外星人,外星人对小晨很感兴趣,为了考验小晨的智商,就向小晨提问简单加法,由于外星人使用16进制,所以,小晨必须用16进制回答。
要点总结:
思路很简单,但是要记住相关的API,能够按16进制进行解析计算。要用stringstream配合hex输入字符串,再输出,结果用unsigned long long接收避免越界。输出的时候也是搭配hex即可输出16位,另外要nouppercase才是全小写输出
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
string s1,s2;
cin>>s1>>s2;
unsigned long long num1,num2;
stringstream ss1,ss2;
ss1<<hex<<s1;
ss2<<hex<<s2;
ss1>>num1;
ss2>>num2;
unsigned long long res=num1+num2;
cout<<nouppercase<<hex<<res<<endl;
}
return 0;
}
题目:
明明的爸爸是一位数学家,明明受他爸爸的影响从小就喜欢数学,经常向他爸爸请教数学问题。一天,明明问爸爸什么是素数,爸爸回答说:"首先,素数都是大于1的自然数;其次,素数是只能被1和其本身整除的数。例如'3'这个数,它只能被1和3这两个整数整除,因此'3'就是素数;但是'4'就不是素数,因为4除了能被1和4整除外,也能被2整除,因此'4'就不是一个素数。"
聪明的明明很快就理解了他爸爸的意思,于是又接着问他爸爸:"那么纯粹素数又是什么呢?"明明的爸爸接着回答说:"一个素数,去掉最高位,剩下的数仍为素数,再去掉剩下的数的最高位,余下的数还是素数,这样下去一直到最后剩下的个位数也还是素数,我们把这样的数称为纯粹素数。例如'1013'这个数,它只能被1和1013整除,因此'1013'是一个素数,我们去掉它的最高位,剩下的数是13(其实剩下的应该是013,但是前置0对一个整数来说没有意义,因此0被舍去,就剩下13),13只能被1和13整除,因此13也是个素数,我们再接着去掉它的最高位,剩下的个位数是3,3当然也是素数,因此'1013'就是纯粹素数。更有趣的是,1013是第一个大于1000的纯粹素数,因为:
-
1000能被1、2、......、1000整除,其本身不是素数;
-
1001能被1、7、......、1001整除,其本身不是素数;
-
1002能被1、2、......、1000整除,其本身不是素数;
-
1003能被1、17、......、1003整除,其本身不是素数;
-
1004能被1、2、......、1004整除,其本身不是素数;
-
1005能被1、3、......、1005整除,其本身不是素数;
-
1006能被1、2、......、1006整除,其本身不是素数;
-
1007能被1、19、......、1007整除,其本身不是素数;
-
1008能被1、2、......、1008整除,其本身不是素数;
-
1009是一个素数,但是9能被1、3、9整除,不是素数;
-
1010能被1、2、......、1010整除,其本身不是素数;
-
1011能被1、3、......、1011整除,其本身不是素数;
-
1012能被1、2、......、1012整除,其本身不是素数;
所以从1000到1012,每个数都不是纯粹素数。"
明明对他爸爸的回答很满意,于是自己动手从1000开始寻找纯粹素数,不一会儿他就找到了20个纯粹素数,调皮的明明开始反过来考爸爸了,问他爸爸能否告诉他第2个大于1000的纯粹素数是哪个?第3个大于1000的纯粹素数是哪个?......明明的爸爸被这些突如其来的问题给难住了,他无法立刻回答出来,于是请求你帮助他回答明明的这些问题。
明明的问题可以归结为:跟据一个正整数n,求出从1,000开始从小到大的第n个纯粹素数。
要点总结:
和之前纯粹合数一个思路,封装一个判断纯粹的方法(里面调用另一个封装的判断素数的方法),这里要注意的是substr只传一个参数就是从这个索引截取到末尾,这里while里必须最后一次截的时候长度要有2,否则没得截。最后一次截完长度为1之后要单独再判断一次,这里细心一些
代码:
#include<bits/stdc++.h>
using namespace std;
bool issu(int n){
if(n<2) return false;
if(n==2) return true;
if(n%2==0) return false;
for(int i=3;i<=sqrt(n);i+=2){
if(n%i==0) return false;
}
return true;
}
bool ischuncui(int num){
if(!issu(num)) return false;
string s=to_string(num);
while(s.size()>1){
s=s.substr(1);
int a=stoi(s);
if(!issu(a)) return false;
}
if(issu(stoi(s))){
return true;
}else{
return false;
}
}
int main(){
int n;
while(cin>>n){
int count=0;
int cur=1001;
while(true){
if(ischuncui(cur)){
count++;
}
if(count==n) break;
cur++;
}
cout<<cur<<endl;
}
return 0;
}
题目:
设有3个候选人zhang、li、wang(候选人姓名不区分大小写),10个选民,选民每次输入一个得票的候选人的名字,若选民输错候选人姓名,则按废票处理。选民投票结束后,程序自动显示各候选人的得票结果和废票信息。要求用结构体数组candidate表示3个候选人的姓名和得票结果。
要点总结:
纯送分
代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
int numz=0,numl=0,numw=0,wrong=0;
for(int i=0;i<10;i++){
cin>>s;
if(s=="zhang") numz++;
else if(s=="li") numl++;
else if(s=="wang") numw++;
else wrong++;
}
cout<<"li:"<<numl<<endl<<"zhang:"<<numz<<endl<<"wang:"<<numw<<endl<<"Wrong election:"<<wrong;
return 0;
}
英语翻译:
曾经人们定义三种不同类别的电脑。大型机被放置在衣柜大小的金属机柜中。小型机体积更小,价格更低,性能更弱,但它们能支持多用户并运行商业软件。微型机和其他种类的计算机泾渭分明,这是因为微型机专属于单个用户并且它们的CPU由单个微处理器芯片组成。
如今,因为几乎每台电脑都使用一个或多个微处理器作为其CPU,有无微型处理器不再是微型机和其他电脑区分的标志。人们不再使用小型机这样的术语并且大型机和微型机术语的使用也越来越少。
如今最强大的计算机包括超级计算机,大型机以及服务器。这些设备大多被应用于商业以及政府机构。它们可以同时服务很多用户并且以极快的速度处理数据。