2019 강서성 경기 ccpc 문제 풀이

문제 번 호 는 앞 뒤 를 가리 지 않 고 이어서 문 제 를 보충 하고 자신의 깨 달 음 과 소감 을 쓴다.String 전송 문:http://acm.hdu.edu.cn/showproblem.php?pid=6572 Avin has a string. He would like to uniform-randomly select four characters (selecting the same character is allowed) from it. You are asked to calculate the probability of the four characters being ”avin” in order. Input The first line contains n (1 ≤ n ≤ 100), the length of the string. The second line contains the string. To simplify the problem, the characters of the string are from ’a’, ’v’, ’i’, ’n’. Output Print the reduced fraction (the greatest common divisor of the numerator and denominator is 1), representing the probability. If the answer is 0, you should output “0/1”.
Sample Input
4
avin
4
aaaa
Sample Output
1/256
0/1

문제 면:요구 문자열 은 a,v,i,n 네 가지 자모 만 있 습 니 다.매번 무 작위 로 네 개 를 취하 고 avin 을 얻 을 확률 a,v,i,n 의 확률 은 a,v,i,n 이 나타 나 는 횟수/문자열 의 길이 의 네 가지 이지 만 출력 결 과 는 약 점 이 필요 합 니 다.예 를 들 어 2/256,1/128 을 출력 해 야 합 니 다.
#include
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define rep(i,a,b)for(int i=a;i<=b;i++)
#define rep1(i,a,b)for(int i=a;i
#define rep2(i,a,b)for(int i=a;i>=b;i--)
#define rep3(i,a,b)for(int i=a;i>b;i--)
using namespace std;
const int maxn=1e5+10;
int n;
char c[1005];
int gcd(int a,int b){
    if(b==0)return a;
    else return gcd(b,a%b);
}
int main(){
    while(~scanf("%d",&n)){
        int a1=0,a2=0,a3=0,a4=0;//             
        //      int  cnt[];cnt[c[i]-'a']++          
        scanf("%s",c);
        int len=strlen(c);
        rep1(i,0,len){
            if(c[i]=='a')
                a1++;
            if(c[i]=='v')
                a2++;
            if(c[i]=='i')
                a3++;
            if(c[i]=='n')
                a4++;
        }
        //printf("%d%d%d%d
",a1,a2,a3,a4);
if(a1==0||a2==0||a3==0||a4==0){ printf("0/1
"
); continue; } int k=n*n*n*n; int m=a1*a2*a3*a4; int g=gcd(k,m); printf("%d/%d
"
,m/g,k/g); } }

교통 전송 문:http://acm.hdu.edu.cn/showproblem.php?pid=6573 문제 면:남북 과 동서 로 향 하 는 차 가 있 지만 동서 차 가 갈 때 남북 방향 은 기 다 려 야 한다.그렇지 않 으 면 교통 체증 이 생 길 수 있다.얼마나 기 다 려 야 교통 이 막 히 지 않 는 지 물 어보 자.
1 1
1
1
1 2
2
1 3
Sample Output
1
0
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define inf 0x3f3f3f3f
#define rep(i,a,b)for(int i=a;i<=b;i++)
#define rep1(i,a,b)for(int i=a;i
#define rep2(i,a,b)for(int i=b;i>=a;i--)
using namespace std;
//const int maxn=2e5+5;
int n,m;
int a[1005],b[1005];
int main(){
 while(~scanf("%d%d",&n,&m)){
    rep(i,1,n)
    scanf("%d",&a[i]);
    rep(j,1,m)
    scanf("%d",&b[j]);
    sort(a+1,a+n+1);
    sort(b+1,b+m+1);
    int maxx=max(n,m);
    int ans=0;
    while(1){
        int fla=1;
        rep(i,1,maxx){
            rep(j,1,maxx){
                if(a[i]==b[j]){
                    fla=0;//    
                    break;
                }
            }
            if(!fla)break;
        }
        if(fla){
            printf("%d
"
,ans); break; } ans++; rep(j,1,m) b[j]+=1;// 1 } } return 0; }

D-Budget 전송 문:http://acm.hdu.edu.cn/showproblem.php?pid=6575 문제 면:이것 은 우리 가 상상 하 는 반올림 이 정수 에 들 어 가 는 것 이 아니 라 소수 2 위 에 이 르 는 것 임 을 주의해 야 한다.문 제 를 잘 읽 어 라!!이 문 제 는 소수 곱 하기 수 를 정수 로 바 꾸 어 풀 수 있다)
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define inf 0x3f3f3f3f
#define rep(i,a,b)for(int i=a;i<=b;i++)
#define rep1(i,a,b)for(int i=a;i
#define rep2(i,a,b)for(int i=b;i>=a;i--)
using namespace std;
const int maxn=2e5+5;
int t;
string s;
int main(){
    scanf("%d",&t);
    double ans=0;
    while(t--){
        cin>>s;
        int len=s.size();
        int k=s[len-1]-'0';//       
        //printf("%d
",k);
if(k<=4) ans+=-0.001*k; else if(k>=5&&k<=9) ans+=0.001*(10-k); } printf("%.3f
"
,ans); return 0; }

Worker 전송 문:http://acm.hdu.edu.cn/showproblem.php?pid=6576 문제 풀이:모든 공장 이 매일 처리 하 는 주문 수량 이 같 고 모든 사람 이 일 을 해 야 하 는 상황 이 있 습 니까?반면 으로 미 루 면 같은 작업량 을 찾 을 수 있 고 그들의 최소 공배수(이때 그들의 작업량 이 같다)를 구 한 다음 에 공배수/작업 효율 을 나 누 어 노동자 수 를 계산 할 수 있 습 니 다.만약 에<=m 를 더 하면 m 정수 에 의 해 yes 를 출력 할 수 있 습 니 다.그렇지 않 으 면 no ps 입 니 다.m 수가 많 으 므 로 long 을 사용 해 야 합 니 다.
#include
#include
#include
#include
#include
#include
#include
#define ll long long
#define inf 0x3f3f3f3f
#define rep(i,a,b)for(int i=a;i<=b;i++)
#define rep1(i,a,b)for(int i=a;i
#define rep2(i,a,b)for(int i=b;i>=a;i--)
using namespace std;
const int maxn=2e5+5;
ll n,m;
ll arr[maxn];
ll lcm;
int gcd(int a,int b)
{
    if(b==0)return a;
    else return gcd(b,a%b);
}
int main(){
    while(~scanf("%lld%lld",&n,&m)){
    rep(i,1,n)
    scanf("%lld",&arr[i]);
    rep(i,1,n){
        if(i==1)lcm=arr[i];
        else lcm=lcm*arr[i]/gcd(lcm,arr[i]);//     
    }
    ll sum=0;
    rep(i,1,n)
    sum+=lcm/arr[i];//     
        if(sum>m||m%sum!=0){//      
        printf("No
"
); continue;} else { printf("Yes
"
); rep(i,1,n){ printf("%lld",m/sum*lcm/arr[i]); if(i!=n) printf(" "); else printf("
"
); } } } return 0; }

좋은 웹페이지 즐겨찾기