1006
#include<iostream>
#include<cstring>
#include<ctime>
using namespace std;
int main(){
//clock_t startTime,endTime;
startTime=clock();
char num[3];
cin>>num;
if(strlen(num)==3){
for(int i=0;i<num[0]-'0';i++)
cout<<'B';
for(int i=0;i<num[1]-'0';i++)
cout<<'S';
for(int i=1;i<=num[2]-'0';i++)
cout<<i;
}
else if(strlen(num)==2){
for(int i=0;i<num[0]-'0';i++)
cout<<'S';
for(int i=1;i<=num[1]-'0';i++)
cout<<i;
}
else if(strlen(num)==1){
for(int i=1;i<=num[0]-'0';i++)
cout<<i;
}
//endTime=clock()-startTime;
//cout<<endTime;
}
1007
#include<iostream>
#include<vector>
#include<cmath>
#include<ctime>
using namespace std;
int main(){
//clock_t start,end;
//start=clock();
int n;
cin>>n;
vector<int> num;
for(int i=1;i<=n;i++){
if(i==1||i==4)
continue;
if(i==2||i==3)
{
num.push_back(i);
continue;
}
if(i%2==0)
continue;
int temp=sqrt(i);
int j=3;
for(;j<=temp;j+=2)
if(i%j==0)
break;
if(j>temp)
num.push_back(i);
}
int sum=0;
for(int i=1;i<num.size();i++){
if(num[i]-num[i-1]==2)
sum++;
}
//end=clock();
cout<<sum;
//cout<<endl<<end-start<<"ms";
}
1.“1”不是素数
1008
#include<iostream>
using namespace std;
void reversal(int start,int end,int num[]){
int time=(end-start+1)/2;
for(int i=0;i<time;i++){
int temp=num[start+i];
num[start+i]=num[end-i];
num[end-i]=temp;
}
}
void move(int n,int m,int num[]){
reversal(0,n-m-1,num);
reversal(n-m,n-1,num);
reversal(0,n-1,num);
}
int main()
{
int n,m;
cin>>n>>m;
m=m%n;
int num[n]={0};
for(int i=0;i<n;i++){
cin>>num[i];
}
move(n,m,num);
for(int i=0;i<n;i++){
cout<<num[i];
if(i!=n-1)
cout<<' ';
}
}
1.移动数组内元素的3+1个方法(附加一个开挂的方法),数据移动次数逐个变少
1009
#include<iostream>
#include<cstring>
#include<stack>
using namespace std;
int main(){
int len=0;
char c[80];
stack<char> st;
cin.getline(c,80);
int length=strlen(c);
for(int i=0;i<length;i++){
if(isspace(c[i])>0){
for(int j=i-1;j>=i-len;j--){
st.push(c[j]);
}
st.push(' ');
len=0;
}
else if(i==length-1){
for(int j=i;j>=i-len;j--){
st.push(c[j]);
}
}
else{
len++;
}
}
int stack_length=st.size();
for(int i=0;i<stack_length;i++){
cout<<st.top();
st.pop();
}
}
1.字符数组读取整行(包括空格):
char c[10];
cin.getline(c,10);
2.判断字符是否为空格
isspace(c[i]);//c[i]是空格时,返回值>0;不是空格时,返回值为1。
1010
#include<iostream>
using namespace std;
int main(){
int flag=0;//判断是否已经有求导后的多项式输出
int sum=0;
int num=100000;
int n[num];
for(int i=0;i<num;i++){
cin>>n[i];
sum++;
if(cin.get()=='\n')//判断输入是否结束,用于需要输入的数据数量未知时
break;
}
for (int i = 0; i < sum; i+=2){
n[i]=n[i]*n[i+1];
n[i+1]=n[i+1]-1;
}
//由于本题输出空格情况特殊,所以空格放在下一个循环输出
//若下一个循环是0且不是最后一个项,则再下一个循环,然后先输出空格在输出数据;
//若下一个循环是0且是最后一个项,则不用输出最后的空格
for (int i = 0; i <sum; i+=2){
if(i==sum-2&&flag==0) //该情况不是一元多项式,是多个常数项
cout<<0<<' '<<0;
if(n[i]==0)
continue;
if(i!=0)
cout<<' ';
cout<<n[i]<<' '<<n[i+1];
flag=1;
}
}
1.空格的输出:可以在本循环判断后输出,也可以再下一个循环判断后输出