• Codeforces#362


    A题

    题意:给定一串数列,t,t+s,t+s+1,t+2s,t+2s+1......问某一个数是否是数列当中的

    题意:只需判断(x-t)与(x-t-1)能否整除s即可,注意起始时的判断

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <string>
     5 #include <vector>
     6 #include <algorithm>
     7 #include <set>
     8 #include <map>
     9 #include <bitset>
    10 #include <cmath>
    11 #include <queue>
    12 #include <stack>
    13 using namespace std;
    14 int t,s,x;
    15 int main()
    16 {
    17     while(cin>>t>>s>>x)
    18     {
    19         int flag=0;
    20         if(x<=t+1){
    21             if(x==t)
    22             flag=1;
    23         }else{
    24             if((x-t)%s==0){
    25                 flag=1;
    26             }else if((x-t-1)%s==0){
    27                 flag=1;
    28             }
    29         }
    30         if(flag)  cout<<"YES"<<endl;
    31         else   cout<<"NO"<<endl;
    32     }
    33     return 0;
    34 }
    View Code

    B题

    题意:给定科学技术法,求出这个数

    分析:直接模拟即可

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <string>
     5 #include <vector>
     6 #include <algorithm>
     7 #include <set>
     8 #include <map>
     9 #include <bitset>
    10 #include <cmath>
    11 #include <queue>
    12 #include <stack>
    13 using namespace std;
    14 string s;
    15 int main()
    16 {
    17     while(cin>>s)
    18     {
    19         int k;
    20         for(int i=0;i<s.length();i++){
    21             if(s[i]=='e'){
    22                 k=i; break;
    23             }
    24         }
    25         int sum=0;
    26         for(int i=k+1;i<s.length()-1;i++){
    27             sum+=(s[i]-'0');
    28             sum*=10;
    29         }
    30         sum+=s[s.length()-1]-'0';
    31     //    cout<<sum<<endl;
    32         int len=k-2;
    33         int h=sum;
    34         int cnt=0;
    35         if(sum==0)
    36             cnt=1;
    37         while(h){
    38             h/=10;
    39             cnt++;
    40         }
    41 //        cout<<cnt<<endl;
    42     //    cout<<len<<endl;
    43         if(len==1&&s[2]=='0'&&sum==0)
    44         {
    45             cout<<s[0]<<endl;
    46             continue;
    47         }
    48         if(sum<len){
    49             cout<<s[0];
    50             for(int i=2;i<sum+2;i++)
    51                 cout<<s[i];
    52             cout<<".";
    53             for(int i=sum+2;i<s.length()-cnt-1;i++)
    54                 cout<<s[i];
    55             cout<<endl;
    56         }else if(sum==len){
    57             cout<<s[0];
    58             for(int i=2;i<s.length()-cnt-1;i++)
    59                 cout<<s[i];
    60             cout<<endl;
    61         }else{
    62             cout<<s[0];
    63             for(int i=2;i<s.length()-cnt-1;i++)
    64                 cout<<s[i];
    65             for(int i=0;i<sum-len;i++)
    66                 cout<<"0";
    67             cout<<endl;
    68         }
    69     }
    70     return 0;
    71 }
    View Code

     C题:

    题意:给定每条边上的权值,求树上两点之间的距离

    分析:对于两个结点x和y。我们记录下x到y每一步的权值,直到x与y的值相等为止,注意数据范围比较大,用map记录比较好

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <string>
     5 #include <vector>
     6 #include <algorithm>
     7 #include <set>
     8 #include <map>
     9 #include <bitset>
    10 #include <cmath>
    11 #include <queue>
    12 #include <stack>
    13 using namespace std;
    14 map<long long ,long long> mp;
    15 int main()
    16 {
    17     int q;
    18     cin>>q;
    19     while(q--)
    20     {
    21         int num;
    22         cin>>num;
    23         if(num==1)
    24         {
    25             long long x,y,cost;
    26             cin>>x>>y>>cost;
    27             while(x!=y)
    28             {
    29                 if(x>y)
    30                 {
    31                     mp[x]+=cost;
    32                     x/=2;
    33                 }else{
    34                     mp[y]+=cost;
    35                     y/=2;
    36                 }
    37             }
    38         }
    39         else
    40         {
    41             long long x,y;
    42             cin>>x>>y;
    43             long long res=0;
    44             while(x!=y)
    45             {
    46                 if(x>y)
    47                 {
    48                     res+=mp[x];
    49                     x/=2;
    50                 }else
    51                 {
    52                     res+=mp[y];
    53                     y/=2;
    54                 }
    55             }
    56             cout<<res<<endl;
    57         }
    58     }
    59     return 0;
    60 }
    View Code
  • 相关阅读:
    Python学习 —— 阶段综合练习三
    Git 学习(二)版本库创建
    Python学习(九)IO 编程 —— 文件读写
    Pydoc 本地 HTML 形式查看
    Python学习(九)IO 编程 —— 文件夹及文件操作
    在 Virtual Box 安装 Mac Os 并安装 Qt 开发应用
    滚动歌词制作 之 ncm格式转mp3
    Web —— 在自己电脑搭建网站,发布到公网,并使用域名访问
    版本控制软件的使用
    C++ —— 返回数组指针的函数 和 返回指向函数的指针的函数
  • 原文地址:https://www.cnblogs.com/wolf940509/p/5672733.html
Copyright © 2020-2023  润新知