zcmu 4959 ly的新鬧鐘 + 1963 字符串的展開(模擬)

【題目】

ly的新鬧鐘

【題解】

當11點到12點的時候計入碰撞次數爲0,其他都爲1。

【代碼】

#include <cstdio> 
#include <cstdlib> 
#include <cstring> 
#include <cmath> 
#include <cstdlib> 
#include <map> 
#include <list> 
#include <vector> 
#include <stack> 
#include <queue> 
#include <algorithm> 
#include <iostream> 
#define go(i,a,b) for(int i=a;i<=b;i++) 
#define og(i,a,b) for(int i=a;i>=b;i--) 
#define mem(a) memset(a,0,sizeof(a)) 
using namespace std; 
const int inf=0x3f3f3f3f; 
typedef long long ll; 
main() 
{ 
    int t,a,b; scanf("%d",&t); 
    while(t--) 
    { 
        scanf("%d%d",&a,&b); 
        int ans=0; 
        go(i,a,b-1) 
        { 
            if(i==11||i==23) continue; 
            ans++; 
        } 
        printf("%d\n",ans); 
    } 
} 

【題目】

字符串的展開

【題解】

注意‘-’的左右兩邊都是小寫字母或者數字且左邊小於右邊才進行轉換。

【代碼】

#include <cstdio> 
#include <cstdlib> 
#include <cstring> 
#include <cmath> 
#include <cstdlib> 
#include <map> 
#include <list> 
#include <vector> 
#include <stack> 
#include <queue> 
#include <algorithm> 
#include <iostream> 
#define go(i,a,b) for(int i=a;i<=b;i++) 
#define og(i,a,b) for(int i=a;i>=b;i--) 
#define mem(a) memset(a,0,sizeof(a)) 
using namespace std; 
const int inf=0x3f3f3f3f; 
typedef long long ll; 
int f(char a) 
{ 
    if(a>='0'&&a<='9') return 1; 
    if(a>='a'&&a<='z') return 2; 
    return 0; 
} 
main() 
{ 
    int p1,p2,p3; 
    string a; 
    while(~scanf("%d%d%d",&p1,&p2,&p3)) 
    { 
        cin>>a; int l=a.size(); 
        go(i,0,l-1) 
        { 
            if(a[i]=='-'&&f(a[i-1])==f(a[i+1])&&a[i-1]<a[i+1]&&f(a[i-1])&&f(a[i+1])) 
            { 
                if(p1==1||p1==2) 
                { 
                    if(f(a[i-1])==1) 
                    { 
                        if(p3==1) 
                        { 
                            for(int ii=a[i-1]+1;ii<a[i+1];ii++) 
                                for(int j=0;j<p2;j++) 
                                    printf("%c",ii); 
                        } 
                        else
                        { 
                            for(int ii=a[i+1]-1;ii>a[i-1];ii--) 
                                for(int j=0;j<p2;j++) 
                                    printf("%c",ii); 
                        } 
                    } 
                    else
                    { 
                        int k=0; 
                        if(p1==2) k='A'-'a'; 
                        if(p3==1) 
                        { 
                            for(int ii=a[i-1]+1;ii<a[i+1];ii++) 
                                for(int j=0;j<p2;j++) 
                                    printf("%c",ii+k); 
                        } 
                        else
                        { 
                            for(int ii=a[i+1]-1;ii>a[i-1];ii--) 
                                for(int j=0;j<p2;j++) 
                                    printf("%c",ii+k); 
                        } 
                    } 
                } 
                else
                { 
                    int t=a[i+1]-a[i-1]-1; 
                    t*=p2; 
                    while(t--) cout<<'*'; 
                } 
            } 
            else cout<<a[i]; 
        } 
        cout<<endl; 
    } 
} 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章