PTA新生训练赛----4

大提琴的声音就像一条河,左岸是我无法忘却的回忆,右岸是我值得紧握的璀璨年华,中间流淌的,是我年年岁岁淡淡的感伤。

                                                  7-1 出生年

以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。

输入格式:

输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在[1, 3000]之间,n可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。

输出格式:

根据输入,输出x和能达到要求的年份。数字间以1个空格分隔,行首尾不得有多余空格。年份要按4位输出。注意:所谓“n个数字都不相同”是指不同的数字正好是n个。如“2013”被视为满足“4位数字都不同”的条件,但不被视为满足2位或3位数字不同的条件。

输入样例1:

1988 4

输出样例1:

25 2013

输入样例2:

1 2

输出样例2:

0 0001
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
int hanshu(int cs,int bt)
{
    int i,flag=0;
    set<int> a;
    for(i=cs; i<10000; i++)
    {
        a.clear();
        a.insert(i/1000);
        a.insert(i/100%10);
        a.insert(i/10%10);
        a.insert(i%10);
        if(*a.end()==bt)
        {
            flag=i;//cout<<i/1000<<i/100%10<<i/10%10<<i%10<<endl;
            break;
        }
    }
    return flag;
}
int main()
{
    int cs,bt,i;
    cin>>cs>>bt;
    int ns=hanshu(cs,bt)-cs;
    cout<<ns;
    printf(" %04d",hanshu(cs,bt));
    return 0;
}

                                                    7-2 点赞

微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。本题就要求你写个程序,通过统计一个人点赞的纪录,分析这个人的特性。

输入格式:

输入在第一行给出一个正整数N(≤1000),是该用户点赞的博文数量。随后N行,每行给出一篇被其点赞的博文的特性描述,格式为“K F​1​​⋯F​K​​”,其中1≤K≤10,F​i​​(i=1,⋯,K)是特性标签的编号,我们将所有特性标签从1到1000编号。数字间以空格分隔。

输出格式:

统计所有被点赞的博文中最常出现的那个特性标签,在一行中输出它的编号和出现次数,数字间隔1个空格。如果有并列,则输出编号最大的那个。

输入样例:

4
3 889 233 2
5 100 3 233 2 73
4 3 73 889 2
2 233 123

输出样例:

233 3
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
int ls,mx,N,K,F,jg[1010];
int main()
{
    cin>>N;
    while(N--)
    {
        cin>>K;
        for(int i=0; i<K; i++)
        {
            cin>>F;
            jg[F]++;
        }
    }
    for(int i=0; i<=1000; i++)
        if(jg[i]>=mx)
        {
            mx=jg[i];
            ls=i;
        }
    cout<<ls<<' '<<mx<<endl;
    return 0;
}

 

7-3 情人节

以上是朋友圈中一奇葩贴:“2月14情人节了,我决定造福大家。第2个赞和第14个赞的,我介绍你俩认识…………咱三吃饭…你俩请…”。现给出此贴下点赞的朋友名单,请你找出那两位要请客的倒霉蛋。

输入格式:

输入按照点赞的先后顺序给出不知道多少个点赞的人名,每个人名占一行,为不超过10个英文字母的非空单词,以回车结束。一个英文句点.标志输入的结束,这个符号不算在点赞名单里。

输出格式:

根据点赞情况在一行中输出结论:若存在第2个人A和第14个人B,则输出“A and B are inviting you to dinner...”;若只有A没有B,则输出“A is the only one for you...”;若连A都没有,则输出“Momo... No one is for you ...”。

输入样例1:

GaoXZh
Magi
Einst
Quark
LaoLao
FatMouse
ZhaShen
fantacy
latesum
SenSen
QuanQuan
whatever
whenever
Potaty
hahaha
.

输出样例1:

Magi and Potaty are inviting you to dinner...

输入样例2:

LaoLao
FatMouse
whoever
.

输出样例2:

FatMouse is the only one for you...

输入样例3:

LaoLao
.

输出样例3:

Momo... No one is for you ...

 

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
int main()
{
    string s,s1,s2;
    int t=0;
    while(cin>>s)
    {
        if(s[0]=='.')
            break;
        t++;
        if(t==2)
            s1=s;
        if(t==14)
            s2=s;
    }
    if(t>=14)
        cout<<s1<<" and "<<s2<<" are inviting you to dinner...";
    if(t>=2&&t<14)
        cout<<s1<<" is the only one for you...";
    if(t<2)
        cout<<"Momo... No one is for you ...";
    return 0;
}

 

                                               7-4 A乘以B

看我没骗你吧 —— 这是一道你可以在10秒内完成的题:给定两个绝对值不超过100的整数A和B,输出A乘以B的值。

输入格式:

输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。

输出格式:

在一行中输出A乘以B的值。

输入样例:

-8 13

输出样例:

-104
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
int A,B;
int main(){
    cin>>A>>B;
    cout<<A*B<<endl;
    return 0;
}

 

                                                   7-5 A除以B

真的是简单题哈 —— 给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。

输入格式:

输入在第一行给出两个整数A和B(−100≤A,B≤100),数字间以空格分隔。

输出格式:

在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为Error。输出的商应保留小数点后2位。

输入样例1:

-1 2

输出样例1:

-1/2=-0.50

输入样例2:

1 -3

输出样例2:

1/(-3)=-0.33

输入样例3:

5 0

输出样例3:

5/0=Error
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
int A,B;
int main()
{
    cin>>A>>B;
    if(B==0)
        cout<<A<<'/'<<B<<'='<<"Error"<<endl;
    else if(B<0)
    {
        cout<<A<<'/'<<'('<<B<<')'<<'=';
        printf("%.2f\n",A*1.0/B);
    }
    else
    {
        cout<<A<<'/'<<B<<'=';
        printf("%.2f\n",A*1.0/B);
    }
    return 0;
}

 

                                                            7-6 新世界

这道超级简单的题目没有任何输入。

你只需要在第一行中输出程序员钦定名言“Hello World”,并且在第二行中输出更新版的“Hello New World”就可以了。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
int main(){
    cout<<"Hello World"<<endl;
    cout<<"Hello New World"<<endl;
    return 0;
}

                                                        7-7 古风排版

中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。

输入格式:

输入在第一行给出一个正整数N(<100),是每一列的字符数。第二行给出一个长度不超过1000的非空字符串,以回车结束。

输出格式:

按古风格式排版给定的字符串,每列N个字符(除了最后一列可能不足N个)。

输入样例:

4
This is a test case

输出样例:

asa T
st ih
e tsi
 ce s
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
char s[1010],a[110][110];
int main()
{
    int n,i=0,j,k;
    scanf("%d",&n);
    getchar();
    char c;
    while(1)
    {
        c=getchar();
        if(c=='\n')
            break;
        s[i]=c;
        i++;
    }
    int t=strlen(s),l=0;
    int m=(t+n-1)/n;
    for(j=m-1; j>=0; j--)
    {
        for(k=0; k<n; k++)
        {
            if(l<t)
                a[k][j]=s[l++];
            else
                a[k][j]=' ';
        }
    }
    for(int j=0; j<n; j++)
    {
        for(int k=0; k<m; k++)
            cout<<a[j][k];
        cout<<endl;
    }
    return 0;
}

 

                                               7-8 最佳情侣身高差

专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。

下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。

输入格式:

输入第一行给出正整数N(≤10),为前来查询的用户数。随后N行,每行按照“性别 身高”的格式给出前来查询的用户的性别和身高,其中“性别”为“F”表示女性、“M”表示男性;“身高”为区间 [1.0, 3.0] 之间的实数。

输出格式:

对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后2位。

输入样例:

2
M 1.75
F 1.8

输出样例:

1.61
1.96
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
int N;
char ch;
double h;
int main(){
    cin>>N;
    while(N--){
        getchar();
        cin>>ch>>h;
        if(ch=='M')
            printf("%.2f\n",h/1.09);
        else
            printf("%.2f\n",h*1.09);
    }
    return 0;
}

 

                                                   7-9 人以群分

社交网络中我们给每个人定义了一个“活跃度”,现希望根据这个指标把人群分为两大类,即外向型(outgoing,即活跃度高的)和内向型(introverted,即活跃度低的)。要求两类人群的规模尽可能接近,而他们的总活跃度差距尽可能拉开。

输入格式:

输入第一行给出一个正整数N(2≤N≤10​5​​)。随后一行给出N个正整数,分别是每个人的活跃度,其间以空格分隔。题目保证这些数字以及它们的和都不会超过2​31​​。

输出格式:

按下列格式输出:

Outgoing #: N1
Introverted #: N2
Diff = N3

其中N1是外向型人的个数;N2是内向型人的个数;N3是两群人总活跃度之差的绝对值。

输入样例1:

10
23 8 10 99 46 2333 46 1 666 555

输出样例1:

Outgoing #: 5
Introverted #: 5
Diff = 3611

输入样例2:

13
110 79 218 69 3721 100 29 135 2 6 13 5188 85

输出样例2:

Outgoing #: 7
Introverted #: 6
Diff = 9359
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
int N,s[100010],out,in,diff;
int main()
{
    cin>>N;
    for(int i=0; i<N; i++)
        cin>>s[i];
    sort(s,s+N);
    if(N%2==0)
    {
        out=in=N/2;
        for(int i=out; i<N; i++)
            diff+=s[i];
        for(int i=0; i<in; i++)
            diff-=s[i];
    }
    else
    {
        out=(N+1)/2;
        in=N/2;
        for(int i=out-1; i<N; i++)
            diff+=s[i];
        for(int i=0; i<in; i++)
            diff-=s[i];
    }
    printf("Outgoing #: %d\n",out);
    printf("Introverted #: %d\n",in);
    printf("Diff = %d\n",diff);
    return 0;
}

 

                                                 7-10 多项式A除以B

这仍然是一道关于A/B的题,只不过A和B都换成了多项式。你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数。

输入格式:

输入分两行,每行给出一个非零多项式,先给出A,再给出B。每行的格式如下:

N e[1] c[1] ... e[N] c[N]

其中N是该多项式非零项的个数,e[i]是第i个非零项的指数,c[i]是第i个非零项的系数。各项按照指数递减的顺序给出,保证所有指数是各不相同的非负整数,所有系数是非零整数,所有整数在整型范围内。

输出格式:

分两行先后输出商和余,输出格式与输入格式相同,输出的系数保留小数点后1位。同行数字间以1个空格分隔,行首尾不得有多余空格。注意:零多项式是一个特殊多项式,对应输出为0 0 0.0。但非零多项式不能输出零系数(包括舍入后为0.0)的项。在样例中,余多项式其实有常数项-1/27,但因其舍入后为0.0,故不输出。

输入样例:

4 4 1 2 -3 1 -1 0 -1
3 2 3 1 -2 0 1

输出样例:

3 2 0.3 1 0.2 0 -1.0
1 1 -3.1
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
double a[100010],b2[100010],c[100010];
int b1[100010],n,fir,m,x,ct1,ct2;
int main()
{
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>x;
        cin>>a[x];
        if(i==0)
            fir=x;
    }
    cin>>m;
    for(int i=0; i<m; i++)
        cin>>b1[i]>>b2[i];
    for(int i=fir; i>=b1[0]; i--)
    {
        int t=i-b1[0];
        c[t]=a[i]/b2[0];
        for(int j=0; j<m; j++)
            a[t+b1[j]]-=c[t]*b2[j];
    }
    for(int i=fir; i>=0; i--)
    {
        if(fabs(c[i])>=0.05)
            ct1++;
        if(fabs(a[i])>=0.05)
            ct2++;
    }
    cout<<ct1;
    for(int i=fir; i>=0; i--)
        if(fabs(c[i])>=0.05)
            printf(" %d %.1f",i,c[i]);
    if(ct1==0)
        cout<<" 0 0.0";
    cout<<endl;
    cout<<ct2;
    for(int i=fir; i>=0; i--)
        if(fabs(a[i])>=0.05)
            printf(" %d %.1f",i,a[i]);
    if(ct2==0)
        cout<<" 0 0.0"<<endl;
    return 0;
}

 

                                               7-11 悄悄关注

新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对其他用户的点赞情况,扒出有可能被其悄悄关注的人。

输入格式:

输入首先在第一行给出某用户的关注列表,格式如下:

人数N 用户1 用户2 …… 用户N

其中N是不超过5000的正整数,每个用户ii=1, ..., N)是被其关注的用户的ID,是长度为4位的由数字和英文字母组成的字符串,各项间以空格分隔。

之后给出该用户点赞的信息:首先给出一个不超过10000的正整数M,随后M行,每行给出一个被其点赞的用户ID和对该用户的点赞次数(不超过1000),以空格分隔。注意:用户ID是一个用户的唯一身份标识。题目保证在关注列表中没有重复用户,在点赞信息中也没有重复用户。

输出格式:

我们认为被该用户点赞次数大于其点赞平均数、且不在其关注列表上的人,很可能是其悄悄关注的人。根据这个假设,请你按用户ID字母序的升序输出可能是其悄悄关注的人,每行1个ID。如果其实并没有这样的人,则输出“Bing Mei You”。

输入样例1:

10 GAO3 Magi Zha1 Sen1 Quan FaMK LSum Eins FatM LLao
8
Magi 50
Pota 30
LLao 3
Ammy 48
Dave 15
GAO3 31
Zoro 1
Cath 60

输出样例1:

Ammy
Cath
Pota

输入样例2:

11 GAO3 Magi Zha1 Sen1 Quan FaMK LSum Eins FatM LLao Pota
7
Magi 50
Pota 30
LLao 48
Ammy 3
Dave 15
GAO3 31
Zoro 29

输出样例2:

Bing Mei You
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
struct node
{
    string name;
    int num;
} p[100010];
map<string,int>mp;
set<string>se;
int n,sum=0;
double aver;
string s;
int main()
{
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>s;
        mp[s]++;
    }
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>p[i].name>>p[i].num;
        sum+=p[i].num;
    }
    aver=(double)sum/n;
    for(int i=0; i<n; i++)
    {
        if(mp[p[i].name])
            continue;
        if(p[i].num<aver)
            continue;
        se.insert(p[i].name);
    }
    if(se.size()==0)
        cout<<"Bing Mei You"<<endl;
    else
    {
        set<string>::iterator it;
        for(it=se.begin(); it!=se.end(); it++)
            cout<<*it<<endl;
    }
    return 0;
}

 

                                                     7-12 功夫传人

一门武功能否传承久远并被发扬光大,是要看缘分的。一般来说,师傅传授给徒弟的武功总要打个折扣,于是越往后传,弟子们的功夫就越弱…… 直到某一支的某一代突然出现一个天分特别高的弟子(或者是吃到了灵丹、挖到了特别的秘笈),会将功夫的威力一下子放大N倍 —— 我们称这种弟子为“得道者”。

这里我们来考察某一位祖师爷门下的徒子徒孙家谱:假设家谱中的每个人只有1位师傅(除了祖师爷没有师傅);每位师傅可以带很多徒弟;并且假设辈分严格有序,即祖师爷这门武功的每个第i代传人只能在第i-1代传人中拜1个师傅。我们假设已知祖师爷的功力值为Z,每向下传承一代,就会减弱r%,除非某一代弟子得道。现给出师门谱系关系,要求你算出所有得道者的功力总值。

输入格式:

输入在第一行给出3个正整数,分别是:N(≤10​5​​)——整个师门的总人数(于是每个人从0到N−1编号,祖师爷的编号为0);Z——祖师爷的功力值(不一定是整数,但起码是正数);r ——每传一代功夫所打的折扣百分比值(不超过100的正数)。接下来有N行,第i行(i=0,⋯,N−1)描述编号为i的人所传的徒弟,格式为:

K​i​​ ID[1] ID[2] ⋯ ID[K​i​​]

其中K​i​​是徒弟的个数,后面跟的是各位徒弟的编号,数字间以空格间隔。K​i​​为零表示这是一位得道者,这时后面跟的一个数字表示其武功被放大的倍数。

输出格式:

在一行中输出所有得道者的功力总值,只保留其整数部分。题目保证输入和正确的输出都不超过10​10​​。

输入样例:

10 18.0 1.00
3 2 3 5
1 9
1 4
1 7
0 7
2 6 1
1 8
0 9
0 4
0 3

输出样例:

404
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
vector<int>V[100010];
int n,m,k;
double z,r,sum,val[100010];
void dfs(int id,double w)
{
    if(val[id])
        sum+=w*val[id];
    else
    {
        for(int i=0; i<V[id].size(); i++)
            dfs(V[id][i],w*r);
    }
    return;
}
int main()
{
    cin>>n>>z>>r;
    r=(100-r)/100;
    for(int i=0; i<n; i++)
    {
        cin>>m;
        if(m==0)
            cin>>val[i];
        else
        {
            for(int j=0; j<m; j++)
            {
                cin>>k;
                V[i].push_back(k);
            }
        }
    }
    dfs(0,z);
    cout<<(int)sum<<endl;
    return 0;
}

 

                                               7-13 非常弹的球

刚上高一的森森为了学好物理,买了一个“非常弹”的球。虽然说是非常弹的球,其实也就是一般的弹力球而已。森森玩了一会儿弹力球后突然想到,假如他在地上用力弹球,球最远能弹到多远去呢?他不太会,你能帮他解决吗?当然为了刚学习物理的森森,我们对环境做一些简化:

  • 假设森森是一个质点,以森森为原点设立坐标轴,则森森位于(0, 0)点。
  • 小球质量为w/100 千克(kg),重力加速度为9.8米/秒平方(m/s​2​​)。
  • 森森在地上用力弹球的过程可简化为球从(0, 0)点以某个森森选择的角度ang (0<ang<π/2) 向第一象限抛出,抛出时假设动能为1000 焦耳(J)。
  • 小球在空中仅受重力作用,球纵坐标为0时可视作落地,落地时损失p%动能并反弹。
  • 地面可视为刚体,忽略小球形状、空气阻力及摩擦阻力等。

森森为你准备的公式:

  • 动能公式:E=m×v​2​​/2
  • 牛顿力学公式:F=m×a
  • 重力:G=m×g

其中:

  • E - 动能,单位为“焦耳”
  • m - 质量,单位为“千克”
  • v - 速度,单位为“米/秒”
  • a - 加速度,单位为“米/秒平方”
  • g - 重力加速度

输入格式:

输入在一行中给出两个整数:1≤w≤1000 和 1≤p≤100,分别表示放大100倍的小球质量、以及损失动力的百分比p。

输出格式:

在一行输出最远的投掷距离,保留3位小数。

输入样例:

100 90

输出样例:

226.757
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
#define wc 1e-6
typedef long long ll;
using namespace std;
double w,p,v2,s;
int main()
{
    cin>>w>>p;
    v2=2*1000*100/w;
    while(v2>wc)
    {
        s+=v2/9.8;
        v2*=1-p/100;
    }
    printf("%.3f\n",s);
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值