蛮力法习题

蛮力法习题

1.分式化简。设计算法,将一个给定的真分数化简为最简分数形式。例如将6/8化简为3/4。

#include <iostream> using namespace std; int MinCommonFactor(int a,int b) //求最小公因数 { int i; for(i=2;i<=a&&i<=b;i++) if(a%i==0&&b%i==0) return i; return 1; } int main() { int n,d; cin>>n>>d; //分别输入一个真分数的分子和分母 int n1=n,d1=d; int min=MinCommonFactor(n1,d1); while(min>1) { n1/=min; d1/=min; min=MinCommonFactor(n1,d1); } cout<<"最简真分数是"<<n1<<"/"<<d1<<endl; }

2.设计算法,判断一个大整数能否被11整除。可以通过以下方法:将该数的十进制表示从右端开始,每两位一组构成一个整数,然后将这些数相加,判断其和能否被11整除。

#include <iostream> using namespace std; int main() { char a[100]; //用字符数组来存储一个长度可以达到100的十进制数 cin>>a; int temp(0); for(int i=0;a[i]!='\0';i++) { if(i%2==0) temp+=a[i]-'0'; else temp+=10*(a[i]-'0'); } if(temp%11==0) cout<<"该大整数能被11整除"<<endl; else cout<<"该大整数不能被11整除"<<endl; return 0; }

3.数字游戏。把数字1、2、……、9这9个数字填入以下加减乘除四则运算式中,使得该等式成立。要求9个数字仅出现1次,且数字1不能出现在乘和除的第一位中。 □□*□+□□□/□-□□=0 用整型数组a[1]~a[9]存储1~9的全排列 ??

4.设计算法求解a^n mod m,其中a、n和m均为大于1的整数

#include <iostream> using namespace std; int Mod(int a,int n,int m) { int aa=a; while(n>1) { aa *= a % m; n--; } return aa%m; } int main() { int a,n,m;; cin>>a>>n>>m; cout<<a<<"^"<<n<<" mod "<<m<<"的值为"<<Mod(a,n,m)<<endl; return 0; }

出自王红梅 胡敏编著《算法设计与分析》习题3 怎么感觉和蛮力法没有什么关系 未完继续学习&&做题 17.3.7