31:开关灯
恶心的题
#include <iostream>
using namespace std;
int main(){
int N,M; //,灯的数量和人数
cin >>N>>M;
int li[N]; //创造N个灯
for(int i=0;i<N;i++){ //遍历一次
li[i]=1; // 给每个灯1这个值,代表开灯
}
for(int j=1;j<M+1;j++){ // 从1个人开始循环
int a=0; // 代表每个灯的编号
for(int j2=1;j2<N+1;j2++){ //再遍历一次,看哪个灯要被关上
if((a+1)%j==0) { // 如果灯的编号能被人数整除
li[a]=li[a]*-1; //给这个灯的值取相反数,-1代表关灯
}a++;
}
}
for(int k=0;k<N;k++){ //再遍历一次,看哪个灯是关闭的
if(li[k]==-1){ //如果每个灯的值是-1,代表关灯,输出这个灯的值。
if(k==0) cout << k+1;
else cout << ","<< k+1;
}
}
}
我再也不信什么\b退格再补个空格什么的了,害我重新提交了五遍,一直以为是代码问题
32:求分数序列和
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main(){
int n;
double re=0;
cin >> n;
int q[n],p[n];
for(int i=0;i<n;i++){
p[0]=1;q[0]=2;
re +=(double)q[i]/p[i];
q[i+1] =q[i]+p[i];
p[i+1] =q[i];
}
cout << fixed << setprecision(4) << re;
}
很简单,虽然我不知道为什么那么少人做。
33:计算分数加减表达式的值
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int n,a=1;
cin >> n;
double re=0;
for(int i=1;i<n+1;i++){
if(i%2==0){a=-1; re +=(double)a/i;}
else {a=1; re+=(double)a/i;}
}
cout <<fixed<<setprecision(4)<< re;
}
34:求阶乘的和
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int n,finally=0,re=0;
cin >> n;
for(int i=1;i<n+1;i++){
re=i;
for(int k=i;k>2;k--){
re *=(k-1);
} finally += re;
}cout << finally;
}
题倒是都挺简单的(除了第一个),但。。。总感觉老是这样做题赶不上别人,要学点新的吧。。。