本文主要是介绍CSP-201712-2-游戏 90分原因分析 及 满分参考,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 一、90分代码
- 二、原因分析
- 三、解决方式
- 四、100分代码
一、90分代码
#include<iostream>
using namespace std;
int main()
{int n,k;cin>>n>>k;int i,j=n;int p[n];for(i=0;i<=n;i++){p[i] = i;}while(j>1){for(i=1;i<=n;){if(p[i]==0){ i++ ;}else if(p[i]%k==0){
// cout<<i<<" num:"<<p[i]<<" taotai"<<endl;p[i]=0;j--;i++;}else if(p[i]%10==k){
// cout<<i<<" num:"<<p[i]<<" taotai"<<endl;p[i]=0;j--;i++;}else{
// cout<<i<<" num:"<<p[i]<<endl;p[i] = p[i]+j;i++;}}}for(i=1;i<=n;i++){if(p[i]!=0){cout<<i;}}
}
二、原因分析
未考虑特殊情况:
如果输入
5 1
输出会为空
三、解决方式
要加一个if()判断总人数 j 是否为1,也就是只剩下一个人了
以下,修改后的代码
四、100分代码
#include<iostream>
using namespace std;
int main()
{int n,k;cin>>n>>k;int i,j=n;int p[n];for(i=0;i<=n;i++){p[i] = i;}while(j>1){for(i=1;i<=n;){if(p[i]==0){ i++ ;}else if(p[i]%k==0){
// cout<<i<<" num:"<<p[i]<<" taotai"<<endl;p[i]=0;j--;i++;if(j==1)//防止只报了一轮,所有人都淘汰了{break;}}else if(p[i]%10==k){
// cout<<i<<" num:"<<p[i]<<" taotai"<<endl;p[i]=0;j--;i++;if(j==1){break;}}else{
// cout<<i<<" num:"<<p[i]<<endl;p[i] = p[i]+j;i++;}}}for(i=1;i<=n;i++){if(p[i]!=0){cout<<i;}}
}
这篇关于CSP-201712-2-游戏 90分原因分析 及 满分参考的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!