朵拉编程的时候也想顺便练习英语。她编程从键盘读入一个整数n,如果n值为0或者1,向屏幕输出“0 indian boy.”或“1 indian boy.”;如果n大于1,比如9,则输出“9 indian boys.”。请你也编一个这样的程序。
整数n
见题干描述
9
9 indian boys.
- #include
- using namespace std;
- int n;
- int main() {
- cin >> n;
- if (n == 0) cout << "0 indian boy.";
- else if (n == 1) cout << "1 indian boy.";
- else if(n>1) cout << n << " indian boys.";
-
- return 0;
- }
编程序实现功能:输入一个整数,判断其是否能同时被3、5、7整除。能被整除则输出“Yes”,否则, 输出“No”。
一个整数
Yes 或 No
7
No
- #include
- using namespace std;
- int n;
- int main() {
- cin>>n;
- if (!(n % 3))
- if (!(n % 5))
- if (!(n % 7))
- cout << "Yes";
- else cout << "No";
- else cout << "No";
- else cout << "No";
-
- return 0;
- }
开车超速是要罚款的,某国相应法律如下:
| 情况 | 处罚 |
|---|---|
| 车速 ≤ 限速 | 程序输出:Not Speeding |
| 超速比 ≤ 10% | 程序输出:Speeding Warning |
| 10% <超速比≤ 20% | 程序输出:Fine 100 |
| 20% <超速比≤ 50% | 程序输出:Fine 500 |
| 50% <超速比≤ 100% | 程序输出:Fine 1000 |
| 超速比 > 100% | 程序输出:Fine 2000 |
请编写程序,程序从输入的第1行读取车速(整数),从输入的第2行读取限速值(整数),然后使用条件分支语句进行判断,输出如表所示的处罚结论。
车速
限速值
如表所示的处罚结论
- 149
- 100
Fine 500
- #include
- using namespace std;
- int v, limit;
- int main() {
- cin >> v >> limit;
- if (v <= limit)
- cout << "Not Speeding";
- else if (v <= limit * 1.1)
- cout << "Speeding Warning";
- else if (v <= limit * 1.2)
- cout << "Fine 100";
- else if (v <= limit * 1.5)
- cout << "Fine 500";
- else if (v <= limit * 2)
- cout << "Fine 1000";
- else
- cout << "Fine 2000";
-
- return 0;
- }
请编程实现下述功能:

x,y
quadrant 1/2/3/4
15.2,-11.3
quadrant 4
- #include
- using namespace std;
- double x, y;
- char a;
- int main() {
- cin>>x>>a>>y;
- if (x > 0)
- if (y > 0)
- cout << "quadrant 1";
- else
- cout << "quadrant 4";
- else if (y > 0)
- cout << "quadrant 2";
- else
- cout << "quadrant 3";
-
- return 0;
- }
郭、王两位大侠同上终南山习武,两人最初的战力值均为100。王大侠骨骼清奇,天赋较高,每练功一天,战力增加2‰,郭大侠比较愚笨,每练功一天,战力增加1‰。如果休假一天不练,两人的战力均减少1‰。相较于王大侠,郭大侠更加勤奋,日日练功,从不休息,而王大侠,则三天打渔,两天晒网,也就是每5天的前三天练功,后两天休假。
请编写程序,计算N天之后,郭大侠和王大侠战力分别是多少?
整数N
郭的战力值,王的战力值
说明:均保留1位小数,以英文逗号分隔
5
100.5,100.4
- #include
- using namespace std;
- int n;
- double g = 100, w = 100;
- int main() {
- cin >> n;
- g = g*pow(1.001, n);
- if (n >= 5) {
- int d;
- d = n / 5;
- double p;
- p=pow(1.002, 3) * pow(0.999, 2);
- w = w * pow(p, d);
- }
- if (n % 5 <= 3) {
- w = w * pow(1.002, n % 5);
- }
- else {
- w = w * pow(1.002, n % 5);
- w = w * 0.999;
- }
- cout << fixed << setprecision(1);
- cout << g << "," << w;
- return 0;
- }
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。请设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。
在一行中给出一个(2,2 000 000 000]范围内的偶数N。
在一行中按照格式“N = p + q”输出N的素数分解,其中p ≤ q均为素数。又因为这样的分解不唯一(例如24还可以分解为7+17),要求必须输出所有解中p最小的解。
18
18 = 5 + 13
- #include
- using namespace std;
- long long int n;
- bool prime(int a) {
- for (int i = 2; i < sqrt(a); i++) {
- if (a % i==0) return 0;
- }
- return 1;
- }
- int main() {
- cin >> n;
- for (int i = 2; i <= n / 2; i++) {
- if (prime(i)&& prime(n - i))
- {
- cout << n << " = " << i << " + " << n - i;
- break;
- }
- }
- return 0;
- }
考拉兹猜想(Collatz conjecture)又称奇偶归一猜想,是指对于每一个正整数,如果它是奇数,则对它乘3再加1,如果它是偶数,则对它除以2。
如此循环,最终都能得到1。编写一个程序,输入一个正整数,打印其考拉兹序列。
1个>1的正整数
以逗号分隔的考拉兹序列。
5
16,8,4,2,1
- #include
- using namespace std;
- int n;
- int main() {
- cin >> n;
- while (n != 1) {
- if (n % 2 == 1) {
- n = n * 3 + 1;
- cout << n << ",";
- }
- else if (n == 2) {
- n = n / 2;
- cout << 1;
- }
- else {
- n = n / 2;
- cout << n << ",";
- }
- }
- return 0;
- }
本题的要求很简单,就是求N个数字的和。麻烦的是,这些数字是以有理数分子/分母的形式给出的,你输出的和也必须是有理数的形式。
输入第一行给出一个正整数N(≤100)。随后一行按格式a1/b1 a2/b2 ...给出N个有理数。题目保证所有分子和分母都在长整型范围内。另外,负数的符号一定出现在分子前面。
输出上述数字和的最简形式 —— 即将结果写成整数部分 分数部分,其中分数部分写成分子/分母,要求分子小于分母,且它们没有公因子。如果结果的整数部分为0,则只输出分数部分。
- 5
- 2/5 4/15 1/30 -2/60 8/3
3 1/3
- 2
- 4/3 2/3
2
- 3
- 1/3 -1/6 1/8
7/24
- #include
- #define ll long long
- /*求最大公约数*/
- ll gcd(ll a,ll b){
- if(b==0)return a;
- return gcd(b,a%b);
- }
- /*求最小公倍数*/
- ll lcm(ll a,ll b){
- return a*b/gcd(a,b);
- }
- /*分子分母进行约分*/
- void yuefen(ll &a,ll &b){
- ll gcdNum=gcd(a,b);
- if(gcdNum!=0){
- a=a/gcdNum;
- b=b/gcdNum;
- }
- }
- int main(){
- int n;
- ll a1,b1,a2,b2;
- scanf("%d",&n);
- scanf("%lld/%lld",&a1,&b1);
- yuefen(a1,b1);
- int i=1;
- while(i
- scanf("%lld/%lld",&a2,&b2);
- ll lcmNum=lcm(b1,b2);
- a1=a1*lcmNum/b1+a2*lcmNum/b2;//分子进行相加
- b1=lcmNum;
- yuefen(a1,b1);//约分化简
- i++;
- }
- //整数为0且a1!=0 如1/2
- if(a1&&a1/b1==0){
- printf("%lld/%lld\n",a1,b1);
- }else if(a1%b1==0){//如2/2
- printf("%lld\n",a1/b1);
- }else {//如3/2
- printf("%lld %lld/%lld\n",a1/b1,a1%b1,b1);
- }
- return 0;
- }
7-9 均是素数
在给定的区间 [m,n] 内,是否存在素数 p、q、r(p
输入格式:
输入给出区间的两个端点 0
输出格式:
在一行中输出满足条件的素数三元组的个数。
输入样例:
1 35
输出样例:
10
样例解读
满足条件的 10 组解为:
- 2, 3, 5
- 2, 3, 7
- 2, 3, 13
- 2, 3, 17
- 2, 5, 7
- 2, 5, 13
- 2, 5, 19
- 2, 5, 31
- 2, 7, 23
- 2, 13, 17
- #include
- #include
- int sushu(int i) //求素数函数
- {
- int flag1=0;
- if(i>=2)
- {
- for(int j=2;j<=sqrt(i);j++)
- {
- if(i%j==0)
- {
- flag1=1;
- break;
- }
- }
- }
- else
- return 1;
- return flag1;
- }
- int main()
- {
- int n,m,i,j,t,a[10000],flag1=0,k=0,count=0;
- scanf("%d %d",&n,&m);
- for(i=n;i<=m;i++)
- {
- flag1=sushu(i);
- if(flag1==0)
- {
- a[k]=i;
- k++;
- }
- }
- for(i=0;i<=k;i++)
- {
- for(j=i;j<=k;j++)
- {
- for(t=j;t<=k;t++)
- {
- if((sushu(a[i]*a[j]+a[t])==0)&&(sushu(a[j]*a[t]+a[i])==0)&&(sushu(a[t]*a[i]+a[j])==0))
- count++;
- }
- }
- }
- printf("%d",count);
- return 0;
- }
7-10 机工士姆斯塔迪奥
在 MMORPG《最终幻想14》的副本“乐欲之所瓯博讷修道院”里,BOSS 机工士姆斯塔迪奥将会接受玩家的挑战。
你需要处理这个副本其中的一个机制:N×M 大小的地图被拆分为了 N×M 个 1×1 的格子,BOSS 会选择若干行或/及若干列释放技能,玩家不能站在释放技能的方格上,否则就会被击中而失败。
给定 BOSS 所有释放技能的行或列信息,请你计算出最后有多少个格子是安全的。
输入格式:
输入第一行是三个整数 N,M,Q (1≤N×M≤105,0≤Q≤1000),表示地图为 N 行 M 列大小以及选择的行/列数量。
接下来 Q 行,每行两个数 Ti,Ci,其中 Ti=0 表示 BOSS 选择的是一整行,Ti=1 表示选择的是一整列,Ci 为选择的行号/列号。行和列的编号均从 1 开始。
输出格式:
输出一个数,表示安全格子的数量。
输入样例:
- 5 5 3
- 0 2
- 0 4
- 1 3
输出样例:
12
- #include
- int flagr[100001]={0},flagc[100001]={0};
- int main(){
- int n,m,q,Ti,Ci,r=0,c=0;
- scanf("%d%d%d",&n,&m,&q);
- while(q--){
- scanf("%d%d",&Ti,&Ci);
- if(Ti==0&&flagr[Ci]||Ti==1&&flagc[Ci])
- continue; //如果是之前被攻击的行或者列就直接跳过
- if(Ti==0){
- r++;
- flagr[Ci]=1;
- }
- else{
- c++; //标记已经被攻击过了
- flagc[Ci]=1;
- }
- }
- printf("%d",m*n-r*m-c*n+r*c);
- }