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
原文地址:https://www.cnblogs.com/wolf940509/p/5672733.html