• topscoding主题库模板题


    目录

    模板题

    【模板题】分因数(P1101)

    【模板题】区间素数 III(P1113)

    进制转换 III (任意转任意)    (P2463)

    A+B Problem(高精度加法)

    A-B Problem(高精度减法)

     A*B Problem(高精度乘法)

    A/B Problem(高精除以低精) 

    查找m个数字 

    子串查找 

    差分

    set的插入和遍历 

    应为最近比较忙所以一直没有更新对不起sorry,之后的话会不定期的发布文章,请大家谅解。


    模板题

    【模板题】分因数(P1101)

    1. #include
    2. //#include
    3. using namespace std;
    4. int main()
    5. {
    6. int n;
    7. cin>>n;//输入
    8. cout<"=";
    9. while(n > 1)
    10. {
    11. for ( int i = 2;i <= n; i++)
    12. {
    13. if (n %i==0)
    14. {
    15. n=n/i;cout<
    16. if(n!=1)
    17. {
    18. cout<<"*";
    19. }break;
    20. }
    21. }
    22. }
    23. return 0;
    24. }

    【模板题】区间素数 III(P1113)

    1. #include
    2. using namespace std;
    3. const int N = 1e8+10;
    4. bitset flag;
    5. void prime(int n)
    6. {
    7. flag[0] = flag[1] = 1;
    8. flag[2] = 0;
    9. for(int i = 2; i <= n; i++)
    10. {
    11. if(!flag[i])
    12. {
    13. for(int j = i+i; j <= n; j+=i)
    14. flag[j] = 1;
    15. }
    16. }
    17. }
    18. int main()
    19. {
    20. int m, n, ans = 0;
    21. cin >> m >> n;
    22. prime(n);
    23. for(int i = m; i <= n; i++)
    24. {
    25. if(!flag[i])
    26. ans++;
    27. }
    28. cout << ans;
    29. return 0;
    30. }

    进制转换 III (任意转任意)    (P2463)

    1. #include
    2. using namespace std;
    3. long long _zhuan10(string a,long long b)
    4. {
    5. long long s=0,k=1,t,len=a.size();
    6. for(long long i=len-1;i>=0;i--)
    7. {
    8. t=(a[i]>='A'?a[i]-65+10:a[i]-48);
    9. s=s+t*k;
    10. k=k*b;
    11. }
    12. return s;
    13. }
    14. string _10zhuan(long long a,long long b)
    15. {
    16. string c;
    17. while(a!=0)
    18. {
    19. char t=a%b+48;
    20. if(t>'9')
    21. {
    22. t=64+t-'9';
    23. }
    24. c=c+t;
    25. a=a/b;
    26. }
    27. reverse(c.begin(),c.end());
    28. return c;
    29. }
    30. int main()
    31. {
    32. string a;
    33. long long b,c;
    34. cin>>a>>b>>c;
    35. if(a=="0")
    36. {
    37. cout<<0;
    38. return 0;
    39. }
    40. long long t=_zhuan10(a,b);
    41. cout<<_10zhuan(t,c);
    42. }

    A+B Problem(高精度加法

    1. //***wuhaotian***//
    2. #include
    3. using namespace std;
    4. string s1,s2;
    5. int a[250],b[250],c[250];
    6. int k=0,t=0,p;
    7. int main(){
    8. cin >> s1>> s2;
    9. int len1=s1.size(),len2=s2.size(),len;
    10. for(int i=len1-1;i>=0;i--)
    11. {
    12. a[k]=s1[i]-48;
    13. k++;
    14. }
    15. for(int i=len2-1;i>=0;i--)
    16. {
    17. b[t]=s2[i]-48;
    18. t++;
    19. }
    20. len=max(len1,len2);
    21. for(int i=0;i
    22. {
    23. c[i]=a[i]+b[i];
    24. }
    25. for(int i=0;i
    26. {
    27. if(c[i]>=10)
    28. {
    29. c[i+1]=c[i+1]+c[i]/10;c[i]=c[i]%10;
    30. }
    31. }
    32. for(int i=len;i>=0;i--)
    33. {
    34. if(c[i] != 0)
    35. {
    36. p=i;
    37. break;
    38. }
    39. }
    40. for(int i=p;i>=0;i--)
    41. {
    42. cout << c[i];
    43. }
    44. }

    A-B Problem(高精度减法

    1. #include
    2. using namespace std;
    3. string s1,s2;
    4. int a[260],b[260],c[260];
    5. int main(){
    6. int k=0,t=0,p=0;
    7. char f='-';
    8. cin >> s1>> s2;
    9. int len1= s1.size(),len2=s2.size();
    10. if(len1
    11. {
    12. cout <
    13. swap(s1,s2);
    14. }
    15. len1= s1.size(),len2=s2.size();
    16. for(int i=len1-1;i>=0;i--)
    17. {
    18. a[k]=s1[i]-48;
    19. k++;
    20. }
    21. for(int i=len2-1;i>=0;i--){
    22. b[t]=s2[i]-48;
    23. t++;
    24. }
    25. for(int i=0;i
    26. {
    27. if(a[i]
    28. {
    29. a[i+1]-=1;
    30. a[i]=a[i]+10;
    31. }
    32. c[i]=a[i]-b[i];
    33. }
    34. for(int i=len1-1;i>=0;i--)
    35. {
    36. if(c[i]!=0)
    37. {
    38. p=i;
    39. break;
    40. }
    41. }
    42. for(int i=p;i>=0;i--)
    43. {
    44. cout << c[i];
    45. }
    46. }

     A*B Problem(高精度乘法)

    1. #include
    2. using namespace std;
    3. int p,a[1010],b[1010],c[2010];
    4. int k=0,t=0;
    5. string s1,s2;
    6. int main(){
    7. cin>>s1>>s2;
    8. if(s1=="0"||s2=="0"){
    9. cout << 0;
    10. return 0;
    11. }
    12. int len1=s1.size(),len2=s2.size();//注意长度在外面定义
    13. for(int i=len1-1;i>=0;i--){ //逆序存储到数组中
    14. a[k]=s1[i]-48;
    15. k++;
    16. }
    17. for(int i=len2-1;i>=0;i--){
    18. b[t]=s2[i]-48;
    19. t++;
    20. }
    21. for(int i=0;i<=len1-1;i++){
    22. for(int j=0;j<=len2-1;j++){
    23. //第i位和第j位相乘的结果一定是对应在i+j位
    24. //一定要注意是+=,因为某一位上可能存放着多组乘积
    25. c[i+j]=c[i+j]+a[i]*b[j];
    26. }
    27. }
    28. int len=s1.size()+s2.size();//结果的长度最长a.size()+b.size()
    29. for(int i=0;i//处理进位
    30. c[i+1]=c[i+1]+c[i]/10;
    31. c[i]=c[i]%10;
    32. }
    33. for(int i=len;i>=0;i--){
    34. if(c[i]!=0){ p=i;break;}//找出最高不为0的位置
    35. }
    36. for(int i=p;i>=0;i--){
    37. cout<
    38. }
    39. return 0;
    40. }

    A/B Problem(高精除以低精) 

    1. #include
    2. using namespace std;
    3. int b,c[10001],t=0,f;//c表示商 ,t表示被除数
    4. int main()
    5. {
    6. string a;
    7. cin>>a>>b;
    8. int la=a.size(),i,p;
    9. for(i=0;i<=la-1;i++){
    10. t=t*10+a[i]-48;
    11. c[i]=t/b;
    12. t=t%b;
    13. }
    14. for(i=0;i<=la-1;i++){
    15. if(c[i]!=0){
    16. p=i;
    17. f=1;
    18. break;
    19. }
    20. }
    21. if(f==1){
    22. for(i=p;i<=la-1;i++)
    23. { cout<
    24. //cout<<"..."<
    25. }
    26. else{
    27. cout << 0;//判断是否出现小数除以大数的情况
    28. }
    29. return 0;
    30. }

    查找m个数字 

    1. #include
    2. using namespace std;
    3. const int N = 1e6 + 10;
    4. int a[2*N], n, m, q;
    5. int check(int q)
    6. {
    7. int l = 1, r = n;
    8. while(l <= r)
    9. {
    10. int mid = (l+r) >> 1;
    11. if(a[mid] == q)
    12. return q;
    13. else if(a[mid] > q)
    14. r = mid - 1;
    15. else
    16. l = mid + 1;
    17. }
    18. return -1;
    19. }
    20. int main()
    21. {
    22. scanf("%d", &n);
    23. for(int i = 1; i <= n; i ++)
    24. scanf("%d", &a[i]);
    25. sort(a+1, a+n+1);
    26. scanf("%d", &m);
    27. for(int i = 1; i <= m; i ++)
    28. {
    29. scanf("%d", &q);
    30. printf("%d\n", check(q));
    31. }
    32. return 0;
    33. }

    子串查找 

    1. #include
    2. using namespace std;
    3. int main()
    4. {
    5. string a,b;int s=0;int f=0;
    6. getline(cin,a);
    7. getline(cin,b);
    8. int nops=a.find(b);
    9. if(nops==-1)
    10. {
    11. cout<<-1;f=1;
    12. }else
    13. {
    14. while(nops!=-1)
    15. {
    16. //cout<
    17. s++;
    18. nops=a.find(b,nops+1);
    19. }
    20. }
    21. if(f==0)
    22. {
    23. cout<
    24. }
    25. }

    差分

    1. //***wuhaotian***//
    2. #include
    3. using namespace std;
    4. const int N = 1e7 + 10;
    5. int q[N], s[N];
    6. void w( int l,int r,int c)
    7. {
    8. s[l] =s[l]+ c;
    9. s[r+1]=s[r+1]- c;
    10. }
    11. int main()
    12. {
    13. int n , m ;
    14. cin>> n >> m;
    15. for( int i = 1 ; i <= n ; i++ )
    16. {
    17. cin >>q[i];
    18. w(i,i,q[i]);
    19. }
    20. while(m--)
    21. {
    22. int l , r , c;
    23. cin>>l>>r>>c;
    24. w(l,r,c);
    25. }
    26. for( int i = 1 ; i <= n ; i++ )
    27. {
    28. s[i]=s[i]+s[i-1];
    29. }
    30. for( int i = 1 ; i <= n ; i++ )
    31. {
    32. cout<" ";
    33. }
    34. }

    set的插入和遍历 

    1. #include
    2. using namespace std;
    3. int main(){
    4. set<int> s;//set可以自动去重和排序,默认升序
    5. int n,t;
    6. cin >> n;
    7. for(int i=1;i<=n;i++){
    8. cin >> t;
    9. s.insert(t);//set没有push_back操作
    10. }
    11. set<int>::iterator it;//set需要使用迭代器遍历数据
    12. for(it=s.begin();it!=s.end();it++){//set支持双向迭代器
    13. cout << *it << " ";
    14. }
    15. }

    应为最近比较忙所以一直没有更新对不起sorry,之后的话会不定期的发布文章,请大家谅解。

  • 相关阅读:
    Python 编程基础 | 第三章-数据类型 | 3.2、整数
    【数据结构-图】图介绍
    (附源码)springboot通用数据展示系统 毕业设计 200934
    Lniux三剑客——Grep
    uboot实践:从ext4根文件系统加载内核、设备树、ramdisk
    React报错之Unexpected default export of anonymous function
    论文精读:DEFORMABLE DETR: DEFORMABLE TRANSFORMERSFOR END-TO-END OBJECT DETECTION
    Java反射
    【GNN基础学习】图模块基本定义 || 图的邻接矩阵 || GNN中常见任务有哪些? || GNN消息传递方法 || 多层GCN有什么作用?
    英伟达GDP游戏芯片研究待续
  • 原文地址:https://blog.csdn.net/Mark1277/article/details/132842644