首页 > 其他分享 >模块

模块

时间:2023-02-10 00:55:27浏览次数:57  
标签:arr 模块 int len char ++ str

​素数:

int prime(int n)  //验证素数 
{
    int i, x, t;
    t =    (int)(sqrt(n));
    for(i = 2; i <= t; i++)
        if(n%i == 0) return 1;
    return 0;
}

公约公倍数:完全不需要额外判断大小

int gcd(int m,int n){
	return n ? gcd(n, m % n) : m;
}
 
int lcm(int m,int n){
	return (m*n)/gcd(m,n);
}
_____________________________________
int n_gcd(int* nums, int numsSize){
    for (int i = 1; i < numsSize; ++i) {
        nums[0]= gcd(nums[0],nums[i]);
    }
    return nums[0];
}
int n_lcm(int* nums, int numsSize){
    for (int i = 1; i < numsSize; ++i) {
        nums[0]= lcm(nums[0],nums[i]);
    }
    return nums[0];
}

分解质因数:

void Decompose_prime_factors(int n){
    ::printf("%d=",n);
    for (int i = 2; i <= n; ++i) {
        if (n%i==0){
            ::printf("%d",i);
            n/=i;
            if (n!=1)::printf("*");
            i=1;
        }
       // if (n==1) return ;
    }
}

凯撒:

void fun(char a[],int act)
{
    for (int i = 0; i < strlen(a); i++)
        if (a[i] >= 'a' && a[i] <= 'z')
            a[i] = (a[i] - 'a' + act + 26) % 26 + 'a';
        else if (a[i] >= 'A' && a[i] <= 'Z')
            a[i] = (a[i] - 'A' + act + 26) % 26 + 'A';
}

排序:(lld或lf)

void bubble_d(r)_sort(int arr[], int len) {
    int i, j;
    for (i = 0; i < len - 1; i++)
        for (j = 0; j < len - 1 - i; j++)
            if (arr[j] <(>) arr[j + 1]) {
                arr[j] ^= arr[j+1];
                arr[j+1] ^= arr[j];
                arr[j] ^= arr[j+1];
            }
}

sort(arr,arr+len);
sort(vec.begin(),vec.end());

完数判断:(lld或lf)

void p_num(int a,int b){
    for (int i = a; i <= b ; ++i) {
        int s=1;
        for (int j = 2; j <=(i/2) ; ++j) {
            if(i%j==0) s+=j;
        }
        if(i==s){
            printf("get %d=1",i);
            for (int j = 2; j <= (i/2); ++j) {
                if(0==i%j) printf("+%d",j);
            }
            printf("\n");
        }
    }
}

守形判断:(lld或lf)

void same_num(int a,int b){
    int cont=0,s,tail;
    for (int i = a; i <= b; ++i) {
        s=i*i;
        int n=1,m=i;
        while (m>0){
            n*=10;m/=10;
        }
        tail=s%n;
        if(i==tail){
            cont++;
            printf("%d:  %d^2=%d\n",cont,i,s);
        }
    }
}

排列:

A m
  n
int A(int n, int m) {
	int res = 1;
	for (int i = m; i >= 1; i--) {
		res *= n;	//n × n-1 × n-2 × ... n-m,m就是需要减1的次数
		n--;
	}
}

组合数:

C n
  m
int cnm(int n,int m){
    if(n==0) return 1;
    if(n==1) return m;
    return m*cnm(n-1, m-1)/n;
}
int C(int n, int m) {
	m = Math.min(m, n-m);
	
	int numerator =   A(n, m);	//分子
	int denominator = A(m, m);	//分母
	return numerator / denominator;
}

进制转换:一般大家默认二进制,八进制,十进制,十六进制分别用字符:bin, oct, dec, hex 来表示

scanf("%x",&a);
printf("%d",a);
____________________________________
n进制-->10进制
void tranP_fun(int x,int p){
    //x输入数字  p该数的进制数
    int y=0,product=1;
    while(x!=0){
        y=y+(x%10)*product;
        x=x/10;
        product*=p;
    }
    printf("%d",y);
}
________
10-->n
void tran10_fun(int x,int p){
    //x为十进制数,p为目标进制大小
    int a[100]; //存放余数
    int count=0;
    while (1){
        a[count++]=x%p;//=cont,cont++;
        x/=p;
        if(x==0)break;
    }
    for(int i=count-1;i>=0;i--){ //++之后-1;
        printf("%d",a[i]);
    }
}
______________________________
p进制乘法表:
    int res,p;
    char d[17]="0123456789abcdef";
    ::scanf("%d",&p);

    for (int i = 1; i < p; ++i) {//纵向
        ::printf(" %c ",d[i]);
        for (int j = 1; j <= i; ++j) {//横向
            res=i*j;
            if(res<p) ::printf("  %c ",d[res]);
            else ::printf(" %c%c ",d[(res/p)],d[res%p]);
        }
        ::printf("\n");
    }

去重:

len = strlen(arr);
    vector<char> vec ;
    sort(vec.begin(),vec.end());
    for (int i = 0; i < len; ++i)
        vec.push_back(arr[i]);
    vec.erase(unique(vec.begin(), vec.end()), vec.end());
_______________________

    char arr[100];
    gets(arr);
    int len = strlen(arr);
    sort(arr,arr+len);
    len= unique(arr,arr+len)-arr;
    for (int i = 0; i < len; ++i) ::printf("%c",arr[i]);
_______________________

    int len=strlen(arr);
    for (int i = 0; i < len; i++) {
        if(arr[i]>='A'&&arr[i]<='Z'){
            int f=1;
            for (int k = 0; k < strlen(ar); ++k) {
                if(arr[i]==ar[k]) f=0;
            }
            if(f){ar[j]=arr[i];
                j++;
                flag=0;
            }

        }
    }
    ar[j]=NULL;!!!!

混合字符或底层进制换算机制:

long long fun(char a[]) 
{ 	int flag=1;
    static long long result;
    for (int i = 0; i < strlen(a); i++){
        if(a[i]=='-')flag=-1;
        if(a[i]>='1'&&a[i]<='9'){
            result=result*16+a[i]-48;
            continue;
        }
        else if(a[i]=='A'||a[i]=='a'){result=result*16+10;
            continue;}
        else if(a[i]=='B'||a[i]=='b'){result=result*16+11;
            continue;}
        else if(a[i]=='C'||a[i]=='c'){result=result*16+12;
            continue;}
        else if(a[i]=='D'||a[i]=='d'){result=result*16+13;
            continue;}
        else if(a[i]=='E'||a[i]=='e'){result=result*16+14;
            continue;}
        else if(a[i]=='F'||a[i]=='f'){result=result*16+15;
            continue;}

    }
    return flag*result;

}

字符与数:

字符串转整数:在 <stdlib.h> 头文件中

C 库函数 *int atoi(const char str) 把参数 str 所指向的字符串转换为一个整数(类型为 int 型)。

可以num= atoi(token);

C 库函数 **double strtod(const char *str, char endptr) 把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。

比较麻烦,直接抄:

double ret;
    char str[5];char *ptr;
    gets(str);
    ::printf("%f", ::strtod(str,&ptr));

数转字符:

itoa (表示 integer to alphanumeric)是把整型数转换成字符串的一个函数。

//value: 要转换的整数,string: 转换后的字符串,radix: 转换进制数
char str[5];
    int i=168;
    int tense=16;
    itoa(i,str,tense);
    puts(str);

批量复制:

C 库str函数 **char *strcpy(char dest, const char src)src 所指向的字符串复制到 dest

char str[100];
::strcpy(str,"123");
::puts(str);

批量分割:

C 库函数 char *strtok(char str, const char delim) 分解字符串 str 为一组字符串,delim** 为分隔符。

  • str -- 要被分解成一组小字符串的字符串。
  • delim -- 包含分隔符的 C 字符串。返回值

第一次调用strtok函数时,这个函数将忽略间距分隔符并返回指向在str字符串找到的第一个符号的指针,丢掉分隔符sep,添加NULL字符结尾(可以理解为用NULL替换了sep).

通过调用一系列的strtok函数,更多的符号将从str字符串中分离出来.每次调用strtok函数时,都将通过在找到的符号后插入一个NULL字符(丢掉sep)来修改str字符串.

为了读取str中的下一个符号,调用strtok函数时str参数为NULL,这会引发strtok函数在已修改过的str字符串查找下一个符号.

该函数返回被分解的第一个子字符串,如果没有可检索的字符串,则返回一个空指针。

编辑

IP判断:

while (~scanf("%s",str[i])){
        char *token;
        flag=1;
        token= strtok(str[i],".");
        while (token!=0){
            num= atoi(token);
            if(num>255||num<=0) flag=0;
            token= strtok(NULL,".");
        }
        if(flag)printf("Y\n");
        else printf("N\n");
        i++;
    }

万年历:

int fun_Time(int year, int month, int day) {
    if(month == 1 || month == 2) {
        month += 12;
        --year;
    }
    int week = -1;
    week = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 -year / 100 +year / 400) % 7 + 1;
    //(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7
    return week;
}

补充:

| 18 | double ceil(double x)
返回大于或等于 x 的最小的整数值。 |
| ---- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| 19 | double fabs(double x)
返回 x 的绝对值。 |
| 20 | double floor(double x)
返回小于或等于 x 的最大的整数值。 |
| 21 | double fmod(double x, double y)
返回 x 除以 y 的余数。 |

标签:arr,模块,int,len,char,++,str
From: https://www.cnblogs.com/furiyo/p/17107586.html

相关文章

  • drf-day9——接口文档、cookie.session.token发展史、jwt介绍及工作原理、drf-jwt模块
    目录一、接口文档使用coreapi自动生成接口文档步骤代码两点说明二、cookiesessiontoken发展史(彻底理解cookie,session,token,便于理解jwt)1、Cookie,Session,Token发展史2、......
  • python中的上下文管理器以及python内建模块contextlib的contextmanager方法
    上下文管理器上下文管理器是实现了上下文管理协议的对象,其特有的语法是“with…as”。主要用于保存和恢复各种全局状态,关闭文件等,并为try…except…finally提供了一个方......
  • MDQ60-16-ASEMI三相整流模块MDQ60-16
    编辑-ZMDQ60-16在MDQ封装里采用的4个芯片,是一款机床用三相可控整流模块。MDQ60-16的浪涌电流Ifsm为920A,漏电流(Ir)为5mA,其工作时耐温度范围为-40~150摄氏度。MDQ60-16采用GP......
  • ASEMI三相整流模块MDS55-16特征,MDS55-16应用
    编辑-ZASEMI三相整流模块MDS55-16参数:型号:MDS55-16最大重复峰值反向电压(VRRM):1600V最大RMS电桥输入电压(VRMS):1700V最大平均正向整流输出电流(IF):55A峰值正向浪涌电流(IFSM):920A每......
  • Python教程:selenium模块用法教程
    1.介绍selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如......
  • Python之ruamel.yaml模块详解(一)
    (Python之ruamel.yaml模块详解(一))1ruamel.yaml简介ruamel.yaml是一个yaml解析器;ruamel.yaml是一个用于Python的yaml1.2加载器/转储程序包;它是PyYAML3.11的衍生产品;r......
  • MN316模块-使用手册
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/circuit_module/MN316"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>......
  • 《Vue.js 设计与实现》读书笔记 - 第14章、内建组件和模块
    第14章、内建组件和模块14.1KeepAlive组件的实现原理KeepAlive一词借鉴了HTTP协议。KeepAlive组件可以避免组件被频繁的销毁/重建。本质是缓存管理,再加上特殊的挂......
  • 由浅入深学习新模块之window_manager(一)
    作者:王清前言:作为一个开发人员,随着时代和行业的发展,总会不断的接触不同的新任务,新模块,这就需要不断的学习与沉淀。因为工作的需求,笔者需要对一些自己负责模块之外的模块进......
  • MDS55-16-ASEMI电机专用模块MDS55-16
    编辑:llMDS55-16-ASEMI电机专用模块MDS55-16型号:MDS55-16品牌:ASEMI封装:MDS正向电流:55A反向电压:1600V引脚数量:5芯片个数:6芯片尺寸:MIL漏电流:>10ua恢复时间:>500ns浪涌电流:1200A......