点击这里更换您喜欢的皮肤wtboj 首页
请点击这里登入noios   首页 入门 c++讲义 入门教程视频 其他页面 入门视频 站务 公告 | 题库 记录 竞测 测试 闯关 作业 排名 团队 讨论 | 换肤 | 登入 注册  
News >>   新增功能:各团队管理员可以发布本团队作业了 ()

讨论 Discussion
 
3.2
四年级学案:

1.课堂学习:
分解质因数
【问题描述】
分解质因数是把合数用几个质数相乘的形式表现出来,一般先用这个合数最小的那个因数(是质数的因数)去除,商如果是合数,就继续除:商如果是质数,就写成商乘除数的形式 30=2*3*5; 36=2*2*3*3; 45=3*3*5; 50=2*5*5 你看,例如把30来分解质因数,它最小的因数是(一定用合数除)2,30除以2等于15,15是合数,就继续除,15最小的因数是3,15除以3等于5,5是质数,就不用继续除了.接着把分解出的几个数字写成连乘的形式,即:30=2*3*5.
现在的问题是,给出一个正整数N,如果它是质数,则输出它等于其本身,如果它不是质数,则输出它分解质因数的式子,见下面输入输出样例。
【输入】
  只有一个正整数N(2=<N<=10000)。
【输出】
 只有一行,一个符合上面要求的式子。
【输入输出样例1】
prime.in
36
prime.out
36=2*2*3*3

【输入输出样例2】
prime.in
7
prime.out
7=7

参考程序:
#include<iostream>
using namespace std;
int main(){
freopen("p1677.in","r",stdin);
freopen("p1677.out","w",stdout);
int s=0,n=0,i=0,j=0,k=0,a[1001];
cin>>n;
s=n;
i=2;
while(s>1){
while(s%i==0&&s>1){
k=k+1;
a[k]=i;
s=s/i;

}

i=i+1;
}
cout<<n<<"="<<a[1];
if(k==1) {
fclose(stdin);
fclose(stdout);
return 0;
}
else
for(i=2;i<=k;i++)cout<<"*"<<a[i];
fclose(stdin);
fclose(stdout);
return 0;
}


五、六年级学案:
1.课堂学习:继续理解默写递归算法

买票问题。有2n个人排队购一件价为0.5元的商品,其中一半人拿一张1元人民币,另一半人拿一张0.5元的人民币,要使售货员在售货中,不发生找钱困难,问这2n个人应该如何排队?找出所有排队的方案。(售货员一开始就没有准备零钱,假设用0表示持0.5元的人,用1表示持1元的人)
输入:3
输出:
0 0 0 1 1 1
0 0 1 0 1 1
0 0 1 1 0 1
0 1 0 0 1 1
0 1 0 1 0 1
5

参考程序:
#include<bits/stdc++.h>
using namespace std;
int n,a[100]={0},t=0;
int f(int k,int x,int y){
int i;
if(k>2*n){ t++;
  for(i=1;i<=2*n;i++)cout<<a[i]<<" ";
  cout<<endl;
  return 0;
}
if(y>n)return 0;
if(x>n)return 0;
if(x<n){a[k]=0;
    f(k+1,x+1,y);
}
if(y<x){a[k]=1; f(k+1,x,y+1);
}

}
int main(){
freopen("p1056.in","r",stdin);
 freopen("p1056.out","w",stdout);
cin>>n;
f(1,0,0);
cout<<t;
return 0;

}

( )

此主题无回复显示
发布讨论主题 回复讨论主题
 Copyright wtboj © 2005-2006. www.wutuobang.date Powered by wtboj 关于 联系 帮助
 wtboj Information ---- Total Users : 1368 | Online Users / Processes : 0 / 16 | Processed Time : 31 ms | Server Time : 2026/3/14 13:38:27