我倒要看看你葫芦里装的是什么事药

我倒要看看你葫芦里装的是什么B

Click me

UVA11388

#include<cstdio>
#include<iostream>

using namespace std;

long long gcd(long long a, long long b){
    if(b == 0)return a;
    else return gcd(b, a%b);
}

int main(){
    int T;
    cin >> T;
    while(T--){
        long long g,l;
        int flag = 0;
        cin >> l >> g;
        if(g%l!=0){cout << -1 << endl; continue;}
        if(l == 1){cout << l << " " << g << endl; continue;}
        long long a,b;
        for(long long i = 1; i*l <=g ; i++){
            if(g%(i*l)!=0)continue;
            a = i*l;
            b = g/i;
            if(gcd(g,i*l) != l)continue;
            flag = 1;
            break;
        }
        if(flag)cout << min(a,b) << " " << max(a,b) <<endl;
        else cout << -1 << endl;
    }
    return 0;
}
//自己测数据的时候才发现原来最小公倍数一定是最大公因数的倍数,也就是说只要判断最小公倍数是否为最大公因数的倍数即可

UVA11889

#include<cstdio>
#include<iostream>

using namespace std;

long long gcd(long long a, long long b){
    if(b == 0)return a;
    else return gcd(b, a%b);
}

int main(){
    int T;
    cin >> T;
    while(T--){
        long long A,C;
        cin >> A >> C;
        if(C%A!=0){cout << "NO SOLUTION" << endl;continue;}
        long long B = C/A;
        long long g = gcd(B, A);
        while(g>1){
            B*=g;
            A/=g;
            g = gcd(A,B);
        }
        cout << B << endl;
    }
    return 0;
}
//正如我们所知道的A*B= gcd(A,B)*lcm(A,B);
//所以B=gcd(A,B)*(lcm(A,B)/A);

UVA10943

#include<cstdio>
#include<iostream>
#include<cstring>
#define mod 1000000
using namespace std;
int dp[210][210];

int main(){
    long long n,k;
    dp[0][0] = 1;
    for(int i = 1; i <= 200; i++){
        dp[i][0] = 1;
        for(int j = 1; j<= i ; j++){
            dp[i][j] = dp[i-1][j-1]+dp[i-1][j];
            dp[i][j]%=mod;
        }
    }
    while(cin >> n >> k && n*k){
        cout << dp[n+k-1][k-1] << endl;
    }
    return 0;
}
//记忆化了C(n,k),哟哟哟;

UVA10780

#include<cstdio>
#include<iostream>
#include<cstring>
#define INF 100000000
using namespace std;

int main(){
    int T,t=0;
    cin >> T;
    while(t++<T){
        int n,m;
        cin >> m >> n;
        int i = 2,ans = INF;
        while(m!=1){
            int p = 0;//质因子个数;
            while(m%i==0){
                m/=i;
                p++;
            }
            if(p){
                int num = n, temp = 0;
                while(num){
                    temp+=num/i; // 每除一次有i的个数
                    num/=i;
                }
                ans = min(ans, temp/p);//取最小的才能满足所有的,temp/p自己意会比如p=3,i=2;
            }
            i++;
        }
        printf("Case %d:\n",t);
        if(ans) cout << ans << endl;
        else cout << "Impossible to divide" << endl;
    }
    return 0;
}
//质因数分解

UVA10892

//暴力代码
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int m;
long long biao[100000];
void init(int T){
    m = 0;
    for(long long i = 1; i*i<=T; i++){
        if(T%i == 0){
            biao[m++] = i;
            if(T/i!=i)
                biao[m++] = T/i;
        }
    }
    sort(biao, biao+m);
}

long long gcd(long long a, long long b){
    return b==0?a : gcd(b,a%b);
}

long long solve(long long T){
    int ans = 0;
    for(int i = 0; i < m; i++){
        for(int j = i; j < m; j++){
            if(biao[i]*biao[j]/gcd(biao[i],biao[j]) == T)
                ans++;
        }
    }
    return ans;
}


int main(){
    int T;
    while(cin >> T && T){
        init(T);
        cout << T << " " << solve(T) << endl;
    }
    return 0;
}
//数论代码
#include<cstdio>
#include<iostream>
using namespace std;

int main(){
    long long n,nn;
    while(cin >> n && n){
        nn = n;
        long long ans = 1;//未有质因数时
        for(long long i = 2; i*i <= nn; i+= 2){
            int cot = 0;
            while(nn%i==0){
                cot++;
                nn/=i;
            }
            ans*=(cot*2+1);
            if(i == 2)i--;
        }
        if(nn>1) ans = ans *3; //是否有剩下一个比sqrt(T)更大的数
        ans = (ans+1)/2;
        cout << n << " " << ans << endl;
    }
    return 0;
}

11752

 #include<cstdio>
#include<iostream>
#include<cstring>
#include<set>
using namespace std;
unsigned long long maxn = ~0LL >> 1;
int biao1[] = {2 ,3 ,5 ,7 ,11 ,13 ,17 ,19 ,23 ,29 ,31 ,37 ,41 ,43 ,47 ,53 ,59 ,61};
int biao2[66];
set<unsigned long long> a;
int main(){
    for(int i = 0;biao1[i]; i++)biao2[biao1[i]]=1;
    for(unsigned long long i = 2;; i++){

        unsigned long long cnt= - 1,x = maxn;
        while(x){
            x/=i;
            cnt++;
        }
        if(cnt<4)break;
        unsigned long long temp = i*i;
        for(int j = 2;j <= cnt; j++ ){
            if(!biao2[j])a.insert(temp);
            temp*= i ;
        }
    }
    a.insert(1);
    for(set<unsigned long long>::iterator it = a.begin()++; it != a.end(); ++it){
        cout << *it << endl;
    }
    return 0;
}

UVA11076

#include<cstdio>
#include<iostream>
#include<cstring>
#define CLR(a,v) memset(a,v, sizeof a)

using namespace std;
int a[10];

void init(){
    CLR(a,0);
}
long long f[20]={1,1,2};
long long factorial(int a){
    if(f[a])return f[a];
    else return f[a] = factorial(a-1)*a;
}

int main(){
    int n;
    while(cin >> n && n){
        init();
        int temp;
        for(int i = 0;i < n; i++){
            cin >> temp;
            a[temp]++;
        }
        unsigned long long ans = 0;
        for(int i = 0; i <= 9 ; i++){
            if(a[i] <= 0)continue;
            long long t=factorial(n-1);
            a[i]--;
            for(int j = 0; j <= 9 ; j++){
                t /= factorial(a[j]);
            }
            a[i]++;
            ans+=t*i;
        }
        unsigned long long an = ans;
        for(int i = 1; i < n; i++)
            ans = ans*10+an;
        cout << ans << endl;
    }
    return 0;
}

11609

#include<cstdio>
#include<iostream>
#include<cstring>
#define MOD 1000000007
using namespace std;

long long quickpow(long long b, long long n){
    long long ans=1;
    while(n){
        if(n&1)ans = ans * b%MOD;
        b = b*b%MOD;
        n>>=1;
    }
    return ans;
}

int main(){
    int n=0,T;
    cin >> T;
    while(n++<T){
        long long b;
        cin >> b;
        printf("Case #%d: %lld\n",n,b*quickpow(2,b-1)%MOD);
    }
    return 0;
}

11609

#include<cstdio>
#include<iostream>
#include<cstring>
#define CLR(a,v) memset(a,v, sizeof a)
using namespace std;
int a[3];
char ans[2] = {'S','T'};
int main(){
    int T,n=0;
    cin >> T;
    getchar();
    while(n++<T){
        CLR(a,0);
        char ch;
        while((ch = getchar())!= '\n' ){
            a[(ch-'0')%3]++;
        }
        //cout << a[0] <<a[1] << a[2] <<endl;
        if((a[1]+a[2]*2)%3!=0 && !(max(a[1],a[2])%3==2 && min(a[1],a[2])==0))a[0]++;//拿走一个使他能被三整除
        a[0]%=2;
        printf("Case %d: %c\n",n,ans[(a[0]+1)%2]);
    }
    return 0;
}

UVA 12050

#include<cstdio>
#include<iostream>
#include<cstring>
#define CLR(a,v) memset(a,v,sizeof a)

using namespace std;
int biao[39]={0};
void init(){
    biao[1] = biao[2] = 9;
    for(int i = 3; i<= 38; i++){
        biao[i] = biao[i-2]*10;
    }
}
int ans[40];
void fuck(int n){
    int k = n, len = 0;
    while(k>biao[len+1]){
        k-=biao[++len];
    }
    len++;
    int temp=1;
    for(int i = 1; i < (len+1)/2 ; i++)temp*=10;
    temp += k-1;
    int count = 0;
    while(temp){
        int a = temp %10;

        ans[len/2 + count] = ans[(len-1)/2-count] = a;
        temp/=10;
        count++;
    }
    for(int i = 0; i < len; i++)
        cout << ans[i];
    cout << endl;
}

int main(){
    init();
    int n;
    while(cin >> n && n)fuck(n);
    return 0;
}
#include<cstdio>
#include<iostream>
#include<cstring>
#define CLR(a,v) memset(a,v,sizeof a)

using namespace std;
int biao[39]={0};
void init(){
    biao[1] = biao[2] = 9;
    for(int i = 3; i<= 38; i++){
        biao[i] = biao[i-2]*10;
    }
}
int ans[40];
void fuck(int n){
    int k = n, len = 0;
    while(k>biao[len+1]){
        k-=biao[++len];
    }
    len++;
    int temp=1;
    for(int i = 1; i < (len+1)/2 ; i++)temp*=10;
    temp += k-1;
    int count = 0;
    while(temp){
        int a = temp %10;

        ans[len/2 + count] = ans[(len-1)/2-count] = a;
        temp/=10;
        count++;
    }
    for(int i = 0; i < len; i++)
        cout << ans[i];
    cout << endl;
}

int main(){
    init();
    int n;
    while(cin >> n && n)fuck(n);
    return 0;
}

10791

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;

int main(){
    long long T,t=0;
    while(cin >> T && T){
        long long ans = 0;
        int flag = 0 ;
        for(long long i = 2 ; i <= sqrt(T)+1; i++){
            if(T%i!=0)continue;
            flag ++;
            int temp = 1;
            while(T%i == 0){
                temp*=i;
                T/=i;
            }
            ans+=temp;
        }
        if(flag==0)ans+=T+1;
        else if(flag==1)ans+=T;
        else if(T>1)ans+=T;
        printf("Case %lld: %lld\n",++t,ans);
    }
    return 0;
}

UVA

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int biao[400000]={0,0,1,1};


int main(){
    int n;
    cin >> n;
    while(n--){
        int t;
        cin >> t;
        int m = (t-1)>>1;
        int h = m*(m+1);
        if(t&1) h -= m;
        cout << h << endl;
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值